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

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操作中是因为减少临界区代码,耗费时间,让更多进程使用临界区资源
}


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容