這聽起來像你想要的是不等待一個線程完成/退出,但對於一個線程 表示它完成了工作,所以你可以給他們更多的工作。
我會做的是
主線程(發送工作到5個線程)會做這樣的事情:
for(;;) {
struct threadmessage msg;
struct *work_result;
struct *work;
thread_queue_get(&result_queue,NULL,&msg);
work_result = msg->data;
handle_result(work_result);
work = get_more_work();
thread_queue_add(worK_result->queue,work,0);
free_work_result(work_result);
}
每5個工作線程(處理一些工作,張貼結果返回給主線程)會做:
for(;;) {
struct threadmessage msg;
struct *work_result;
struct *work;
thread_queue_get(my_queue,NULL,&msg);
work = msg->data;
process(work_result);
work_result->queue = my_queue;
thread_queue_add(&result_queue,work_result,0);
free_work(work);
}
的代碼來實現這樣的隊列在這裏: http://asgaard.homelinux.org/svn/threadqueue/
來源
2009-11-18 21:52:55
nos
'wait'用於進程而不是線程。 –