生产者-消费者问题 -(进程)-操作系统

2023-04-27  本文已影响0人  热血沸腾
image.png image.png image.png

生产者-消费者问题


semaphore  full = 0;  //同步信号量 代表产品数量,初始肯定是0 缓冲区->消费者
semaphore  empty = 5;  //同步信号量 代表空闲缓冲区的数量,初始肯定是5  缓冲区->生产者   
semaphore  mutex = 1; //缓冲区只有一份 是临界资源 互斥
//注意 实现互斥的P操作一定放在实现同步的P操作之后。先同步P后互斥P,否则产生死锁操作!

//生产者进程
productor{
    生产数据;  //不把这段代码放入在PV操作中是因为减少临界区代码,耗费时间,让更多进程使用临界区资源
    P(empty);
    P(mutex);
    把产品放入缓冲区; //访问临界资源
    V(mutex);
    V(full);

}

consumer{
    P(full);
    P(mutex);
    从缓冲区中取数据;//访问临界资源
    V(mutex);
    V(empty);
    消费数据;//不把这段代码放入在PV操作中是因为减少临界区代码,耗费时间,让更多进程使用临界区资源
}


上一篇 下一篇

猜你喜欢

热点阅读