1
wevsty 2016-07-06 22:29:43 +08:00 1
第三个任务单独开线程或者复用前两个的其中一个线程?
互斥体,信号量,事件,关键段这些手段都可以做到,自己选择一下吧。更简单点,设置变量做标志位也是可以的。 |
2
kuko126 2016-07-06 22:32:03 +08:00 1
如果是 java 的话可以用 CountDownLatch
|
3
BigUncleLee OP @wevsty 感谢回复
* 单独处理并不复杂 * 如果这个扩展成这样一个需求: * 将任务不断推送到一个 pipeline 中,并设置 taget 任务。 * 如何保证 target 在 pipeline 最后一个任务完成后,马上进行? |
4
BigUncleLee OP @wevsty 'target' 误打抱歉
|
5
BigUncleLee OP @kuko126 感谢回复 ☺☺
|
6
wevsty 2016-07-06 22:43:59 +08:00 1
|
7
BigUncleLee OP |
8
wevsty 2016-07-06 22:54:57 +08:00 1
@BigUncleLee
用链表举例好了 用一个线程维护链表,设计一个类或者结构标记任务和任务优先级,如果有新任务就加入链表。工作线程遍历链表,优先处理结构中标记为最优先的任务,然后删除链表中的这个任务就好。 如果链表数据同步很麻烦,可以考虑单独开辟链表维护线程 |
9
SoloCompany 2016-07-06 23:37:43 +08:00
CountDownLatch 适用于多任务协作和线程状态无关
如果你的自己管理的非池化线程,那么就最古老的 Thread.join 方法就可以了 thread1.join(); thread2.join(); // 这个位置的代码必然会在 thread1 和 thread2 结束后才会被执行 不仅限于 java ,应该所有支持线程的语言,都应该有 join 语句 |