这听起来像你想要的是不等待一个线程完成/退出,但对于一个线程 表示它完成了工作,所以你可以给他们更多的工作。
我会做的是
主线程(发送工作到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'用于进程而不是线程。 –