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

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

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

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

谢谢!


[解决办法]
concurent
[解决办法]
给等待队列的合个线程设置不同的优先级,先到的优先级高,可否?
[解决办法]
每个火车给个标志符呗,比如1-10给特快的,11-20给普客,21-30给货车。
然后每出一辆就自增。比如第一辆特快为1,第二辆就是2。。到控制台这就比大小。大概思路这样,不知道行不行。
[解决办法]
你搞一个队列,停的时候把火车push_back进去,出的时候pop_front出来,这样就FIFO了。

热点排行