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() 指定相同的目標線程是不確定的。
我怎樣才能達到相同的結果,但沒有崩潰?
感謝