メインスレッドで2つのスレッドを起動するつもりですが、メインスレッドは2つの子スレッドがすべて終了するまで待機する必要があります。これが私のやり方です。
void *routine(void *arg)
{
sleep(3);
}
int main()
{
for (int i = 0; i < 2; i++) {
pthread_t tid;
pthread_create(&tid, NULL, routine, NULL);
pthread_join(&tid, NULL); //This function will block main thread, right?
}
}
上記のコードでは、pthread_join
実際にメインスレッドに子スレッドを待機させますが、問題は、最初のスレッドが終了するまで2番目のスレッドが作成されないことです。これは私が望むものではありません。
私が欲しいのは、2つのスレッドがメインスレッドですぐに作成され、メインスレッドがそれらが終了するのを待つことです。pthread_join
トリックができないようですよね?
多分semaphore
私は仕事をすることができると思いましたが、他の方法はありますか?