用多线程同步方法解决睡眠理发师问题(Sleeping-Barber Problem)
1 .操作系统: Linux
2 .程序设计语言:C语言
3 .设有1个理发师5把椅子(另外还有一把理发椅),几把椅子可用连续存储单元.
1.技术要求:
1)为每个理发师/顾客产生一个线程,设计正确的同步算法
2)每个顾客进入理发室后,即时显示“Entered”及其线程自定义标识,还同时显示理发室共有几名顾客及其所坐的位置。
3)至少有10 个顾客,每人理发至少3秒钟。
4)多个顾客须共享操作函数代码。
提示:
(1) 连续存储区可用数组实现。
(2) 编译命令可用:gcc -lpthread -o 目标文件名源文件名
(3) 多线程编程方法参见附件。)
详细代码
#include
#include
#include
#include
#include
#include
#include
#include
#define n 5
time_t end_time;
sem_t mutex, customers, barbers;
int count = 0;
int chair [5] = {-1, -1, -1, -1, -1 };