#define N 100
typedef semaphore int;
semaphore muxtex = 1; //临界区锁,用于防止生产者消费者同时访问临界资源
semaphore full = 0; //有面包的格子数
semaphore empty = N; //没面包的格子数
void consumer(void)
{
int item;
while(true)
{
P(full); //P操作,尝试使用1张full通行证,若full空,去睡觉。
P(mutex); //若能操作到这,说明有面包。
item = get_item();//将面包拿下来。
V(mutex); //关锁
V(empty); //发放1张空格子通行证
}
}
void producer(void)
{
int item;
while(true)
{
item = produce(); //生产一个面包
P(empty);
P(mutex); //开锁
insert_item(item) //将生产的面包放在格子上
V(mutex); //关锁
V(full); //发放一张full通行证
}
}
PV生产者消费者问题
最新推荐文章于 2024-07-18 14:16:46 发布