- 3
- 0
- 约1.99万字
- 约 59页
- 2020-09-14 发布于广西
- 举报
3.3 信号量与PV操作
同步与同步机制
信号量与PV操作
信号量实现互斥
哲学家就餐问题
生产者-消费者问题
读-写者问题
理发师问题
同步与同步机制
信号量与PV操作
信号量实现互斥
哲学家就餐问题
生产者-消费者问题
读-写者问题
理发师问题
3.3.1 同步和同步机制
• 生产者
• 计算进程
• 发送进程
• 消费者
• 打印进程
• 接收进程
3.3.1 同步和同步机制
1. int k;
2. typedef anyitem item;
3. item buffer[k]; //shared by producers and consumers
4. int in; //shared by producers
5. int out; //shared by consumers
6. int counter; //shared by producers and consumers
3.3.1 (例)
process producer ()
1. while (true) {
2. {produce an item in nextp}
3. if (counter == k) sleep(producer);
4. buffer[in] = nextp ;
5. in = (in + 1)%k;
6. counter++;
7. if(counter==1) wakeup(consumer);
8. }
3.3.1 (例)
process consumer ()
1. while (true) {
2. if (counter == 0) sleep(consumer);
3. nextc = buffer[out];
4. out = (out+1)%k;
5. counter-- ;
6. if(counter == (k-1)) wakeup(producer);
7. {consume the item in nextc}
8. }
3.3.1 (例):竞争错误
P1 P2
1. while (true) { while (true) {
2. {produce an “A” in nextp}
3. {produce an “B” in nextp}
4. if (counter == k) sleep(producer);
5. buffer[in] = nextp ; //buffer[0] = “A”
6. if (counter == k) sleep(producer);
7. buffer[in] = nextp ; //buffer[0] = “B”
8. in = (in + 1)%k; //in = 1
9. in = (in + 1)%k; //in = 2
10. counter++; //counter = 1
11. counter++; //counter = 2
12. if(counter==1) wakeup(consumer);
13. if(counter==1) wakeup
您可能关注的文档
最近下载
- 重大社2024《财务实训教程—智能财务共享》教学课件-固定资产共享.pptx VIP
- 2025年贵州省遵义市绥阳县某国企招聘笔试题库及答案详解1套.docx VIP
- 人教版2026春季新版八年级下册英语全册教案(单元整体教学设计).docx
- 青岛版小数加减法说课稿.doc VIP
- 标准图集-15J403-1 楼梯 栏杆 栏板(一).pdf VIP
- 原发性支气管肺癌病人的护理_201510.ppt VIP
- 云计算原理与实践08云原生应用的开发.pptx VIP
- 2010年版《工程建设标准强制性条文》(水利工程部分).pdf
- 汽车 电工电子 集中实训 实训指导书.pdf
- 重大社2024《财务实训教程—智能财务共享》教学课件-费用共享.pptx VIP
原创力文档

文档评论(0)