首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux多线程如何实现等待队列

2012-03-22 
linux多线程怎么实现等待队列比如我用一类线程模拟火车,一类线程模拟火车行驶路段上的控制台。我用互斥锁和

linux多线程怎么实现等待队列
比如我用一类线程模拟火车,一类线程模拟火车行驶路段上的控制台。
我用互斥锁和条件变量控制各个(火车)线程的行进。
现在有两种路段,第一种是行车路段,不能停。
另一种是可以让多辆火车在里面停的“车库”路段(以队列的方式停)。
我应该怎么编码才能够实现: 在“车库”路段里,如果控制台线程放行火车线程,则放行的是第一辆进“车库”的火车(线程),而不是在“车库”里的多辆火车里任选一辆等待条件变量的放行之。
因为单用pthread_cond_signal,它释放被阻塞在条件变量cond上的一个线程。多个线程阻塞在此条件变量上时,哪一个线程被唤醒是由线程的调度策略所决定的。
所以需要用等待队列,是吧?
应该怎么设计呢?

谢谢!


[解决办法]
那就设置多个信号量控制火车,想放哪个放哪个

话说楼主的结帖率
[解决办法]
可以直接使用消息队列的API啊

C/C++ code
int msgget(key_t key, int msgflg)int msgrcv(int msqid, struct msgbuf *msgp, int msgsz, long msgtyp, int msgflg);int msgsnd(int msqid, struct msgbuf *msgp, int msgsz, int msgflg);int msgctl(int msqid, int cmd, struct msqid_ds *buf); 

热点排行