NUM_TREADS
スレッドがあり、job2()
を実行する前にjob1()
を完了しなければならないとします。このように、これが起こることを保証する方法:すべてのスレッドが1つのジョブを終了してから別のジョブを終了するまで待ちます
void thread_func(void *arg)
{
while(1) {
job1();
some_kind_of_waiting();
job2();
}
return NULL;
}
が作業を以下またはその他の/より良い解決策があるようなセマフォウィル?
{
static int done;
static sem_t semaphore;
if(__sync_fetch_and_add(&done, 1) == THREAD_NUMS-1) {
done = 0;
for(i = 0; i < THREAD_NUMS-1; i++)
sem_post(&semaphore);
} else
sem_wait(&semaphore);
}
ありがとう。
これはcまたはC++の質問ですか?答えは、使用している言語によって異なります。 –
'void'関数から' NULL'を返しています。 –
C++ std :: futureを使用できますか? – Alek86