同步:实现任意计算图 (1)
为每个计算节点设置一个线程和条件变量
void T_u() {
...
mutex_lock(v->lock);
v->num_done++;
cond_signal(v->cv);
mutex_unlock(v->lock);
}
void T_v() {
mutex_lock(v->lock);
while (!(v->num_done == v->num_predecessors)) {
cond_wait(v->cv, v->lock);
}
mutex_unlock(v->lock);
...
}