【操作系统】吸烟者问题

本文探讨了操作系统中的吸烟者问题,涉及三个吸烟者进程和一个代理进程。每个吸烟者需要烟草、纸张和火柴来制作和吸烟。代理进程拥有无限的三种材料供应,并在桌子上放置两种材料,吸烟者通过协调完成香烟制作。文章提供了使用信号量实现的程序代码,包括供应者和吸烟者的伪代码,以同步他们的操作。
摘要由CSDN通过智能技术生成

The Cigarette-SmokersProblem. Consider a system with three smoker processes and one agent process.Each smoker continuously rolls a cigarette and then smokes it. But to roll andsmoke a cigarette, the smoker needs three ingredients: tobacco, paper, and matches. One of the smoker processes has paper, another has tobacco, and thethird has matches. The agent has an infinite supply of all three materials. Theagent places two of the ingredients on the table. The smoker who has theremaining ingredient then makes and smokes a cigarette, signaling the agent oncompletion. The agent then puts out another two of the three ingredients, andthe cycle repeats. Write a program to synchronize the agent and the smokers.

觉得自己写得好烂啊……请各路大神指正


String material [3]={“Tobacco”, ” paper”,”matches”}; //数组用于存放供应者供应的材料

String self [3]= {“Tobacco”, ” paper”,”matches”}; //数组用于存放当前吸烟者持有的材料

Semaphore mutex =1, producer=0, smoker=0; //三个信号量

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值