首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请先人给出建议

2012-08-31 
请前辈给出建议我想在linux下模拟数据结构中银行的那个问题,我想开四个终端模拟四个服务人员,然后一个终端

请前辈给出建议
我想在linux下模拟数据结构中银行的那个问题,我想开四个终端模拟四个服务人员,然后一个终端模拟抽票机,形成队列,然后其他四个终端即四个进程来操纵这个队列,请问应该用那个进程通讯方式,怎么做?

[解决办法]
理论上各种进程通讯方式都是可以的。

用消息队列可能显得比较自然一点而已。
[解决办法]
1,共享内存 + 环形队列 + 互斥锁 + 条件变量 
2,使用信号量取代1中的条件变量
3,消息队列
4,父子进程可用管道,非父子进程可用Fifo,注意小于PIPE_SIZE可以原子写,但pipe不提供原子读,需要你做进程共享的mutex进行保护,或者使用2值信号量做锁。

其他类似方法都可以选,比如4个进程都bind同一个udp port(reuseaddr),派发进程向该port发包,也可以形成抢夺。

热点排行