2
我建立一个简单的任务系统,让我来创建依赖关系的工作图...喜欢的东西:等待多信号 - 并行线程
Job root;
Job job1;
Job job1_1;
Job job1_2;
Job job2(&job1, 1); // job2 cannot start until job1 finishes.
job1.addJob(&job1_1);
job1.addJob(&job1_2);
root.addJob(&job1);
root.addJob(&job2);
root.execute(); // execute the job graph.
我使用并行线程来实现这一点,但我新的这种类型的程序,我不能找到一种方法来同步所有这些。
我试着用pthread_join完成这样的事情:
void Job::execute()
{
for(int i = 0; i < numDependencies; ++i)
dependencies[i].join(); // calling pthread_join
for(int i = 0; i < numSubJobs; ++i)
subJobs[i].start(); // calling pthread_create
... do some work here
for(int i = 0; i < numSubJobs; ++i)
subJobs[i].join(); // calling pthread_join
}
但在pthread_join函数调用的一个我的程序崩溃。
从并行线程文档:
的多个同时呼叫的结果在pthread_join() 指定相同的目标线程是不确定的。
我怎样才能达到相同的结果,但没有崩溃?
感谢