资源简介
解决进程同步中熟睡的理发师问题
包含源代码与输出结果
代码片段和文件信息
#include
#include
#include
#include
#define TRUE 1
#define FALSE 0
// 最大椅子数
#define MAX_CHAIR 5
// 最大顾客数
#define MAX_CUSTOMERS 20
// 定义p、v操作
#define p(x) sem_wait(&x)
#define v(x) sem_post(&x)
// 椅子
int chair;
// 理发师和顾客信号量
sem_t baber customers;
// 互斥信号量 保护临界区(即椅子)
pthread_mutex_t chair_mutex;
// 初始化椅子数和信号量
int init()
{
chair = MAX_CHAIR;
return (sem_init(&baber 0 1) || sem_init(&customers 0 0));
}
// 理发师线程函数
void* _baber(void *arg)
{
printf(“the baber shop opens...\n\n“);
while (TRUE)
{
p(customers); // 尝试为一位顾客服务,否则睡觉
// printf(“baber wake up...\n“);
pthread_mutex_lock(&chair_mutex);
++chair; // 一个顾客去理发,空出一个椅子
printf(“the baber is working on one...\nso the chair left :
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2374 2018-05-05 03:54 baber.c
文件 2561 2018-05-05 03:57 baber.txt
- 上一篇:PQFiber-3.0
- 下一篇:保研面试专业课+数理基础准备一问一答 电子方向
相关资源
- 信号与线性系统分析吴大正 第四版
- 现代语音信号处理-胡航-第四版-高清
- 《语音信号处理(胡航)第3版》pdf
- 信号与系统第三版上册 郑君里.pdf
- 信号与系统第三版下册 郑君里.pdf
- 信号与系统第三版郑君里答案全解p
- 关于plc的交通信号灯的自动控制
- 随机信号分析常建平 李海林习题答案
- 数字信号处理实验,递推法解差分方
- 通信原理实验,模拟信号调制实验,
- EEG signal processing 脑电信号处理方法算
- 基于小波变换的方法识别ECG信号的中
- 数字信号处理答案第二版 (刘益成
- 哈工大 操作系统实验4 linux0.01信号量
- Verilog ADV7123的PAL D控制信号
- XTR115 典型应用电路原理图
- EDA技术:正弦信号发生器设计
- 利用bp神经网络进行语音信号识别
- 89C2051产生PWM信号控制直流电机调速的
- 基于数字信号处理器(DSP)的异步电
- 基于fpga的dds信号发生器的代码
- 利用单片机PWM信号进行舵机控制
- Linux-IPC-进程间通信
- 十字路口交通信号灯PLC控制系统设计
- 信号与系统试卷及答案
- 基于FRFT的LFM信号自适应滤波算法及分
- FPGA实现信号延时的方法
- YAV-WDS WIFI信号采集软件1707源代码.zi
- 圆阵水听器信号波束形成算法
- PID采集加速度计与陀螺仪信号
评论
共有 条评论