2

2 つのスレッドを生成し、両方が完了するまで待機する次の Windows コードがあります。

hThreads[0] = _beginthread(&do_a, 0, p_args_a);
hThreads[1] = _beginthread(&do_b, 0, p_args_b);
WaitForMultipleObjects(2, hThreads, TRUE, INFINITE);

私は現在、pthreads を使用するために同じコードを移植していますが、同等のことを行う方法がわかりませんWaitForMultipleObjects:

pthread_create(&hThreads[0], 0, &do_a, p_args_a);
pthread_create(&hThreads[1], 0, &do_b, p_args_b);
???

同じ機能を実現するために、pthreads を使用する同等の方法はありますか?

4

2 に答える 2

4

ここで行っているように、すべてを待ちたい場合は、単純pthread_join()に各スレッドを呼び出すことができます。それは同じことを達成します。

pthread_create(&hThreads[0], 0, &do_a, p_args_a);
pthread_create(&hThreads[1], 0, &do_b, p_args_b);

pthread_join(hThreads[0], NULL);
pthread_join(hThreads[1], NULL);

2 つ以上のスレッドがある場合は、for ループでこれを行うことができます。

于 2009-07-23T23:58:39.847 に答える
1

私は常に pthread_join で for ループを使用しました

int i;
for(i=0;i<threads;i++)
    pthread_join(tids[i], NULL);
于 2009-07-23T23:59:03.683 に答える