struct work {
void (*run)(void *arg);
void *arg;
}
void Tworker() {
while (1) {
struct work *work;
wait_until(has_new_work() || all_done) {
work = get_work();
}
if (!work) break;
else {
work->run(work->arg); // 允许生成新的 work (注意互斥)
release(work); // 注意回收 work 分配的资源
}
}
}
有三种线程
<
>
_
任务:
<><_
和 ><>_
的组合使用条件变量,只要回答三个问题:
<
” 的条件?>
” 的条件?_
” 的条件?