w***u 发帖数: 156 | 1 【 以下文字转载自 Programming 讨论区 】
发信人: wyseu (wy_seu), 信区: Programming
标 题: c++posix多线程问题请教
关键字: 多线程
发信站: BBS 未名空间站 (Wed Feb 18 03:19:44 2015, 美东)
最近要写一个多线程的应用, 碰到一些问题,
主线程在一开始就create好4个子线程,子线程一开始wait状态,然后主线程开始往下
走,开始task准备分给子线程,然后broadcast给子线程,自己进入wait状态, 子线程
wakeup,做完task,就wait,做后一个子线程完成后,发信号给主线程,然后wait,
主线程在接到信号后,wakeup,继续下一个task, 然后broadcast。问题是主线程激活
到broadcast时间很短, 而子线程从发信号到wait时间长的话,主线程broadcast的信
号就不会正确叫醒子线程,因为那时的子线程还没有进入wait状态。 如何解决呢?其
实就是要实现一个join的功能,但是又不要释放掉子线程, | w***u 发帖数: 156 | | w*r 发帖数: 72 | 3 这不是典型的producer consumer 问题吗,你把message放到queue 里,子线程即使忙
,message 也不会丢 |
|