#include <stdio.h>
#include <stdlib.h>
typedef struct semaphore {
int random;//存储随机数,用于选择提供资源的类型
int offer1;//对应烟草和纸的组合
int offer2;//对应烟草和胶水的组合
int offer3;//对应胶水和纸的组合
int finish;//对应进程执行完毕后的应答
}semaphore;
typedef struct Smoker {
int num;
int sign;
}Smoker;
//申请资源
int wait(semaphore *s,Smoker *sm){
switch (sm->num) {
case 1:
if (s->offer1 == 1) {
//表示1号进程得到想要的资源
sm->sign = 1;//表示1号进程申请到资源
printf("%d号进程申请到需要的资源...\n", sm->num );
break;
}
else {
printf("%d号进程没有申请到需要的资源...\n", sm->num );
break;
}
case 2:
if (s-&