pthread_create
で4つのスレッドを作成しました。私はそれらが同時に実行されるようにしたいので、私はsem_wait(&sem)
をスレッドプロシージャの冒頭に追加します。メインスレッドでは、私はこのようなものを使用しても、私はそれが良い解決策だとは思わない:pthreadを使用して複数のスレッドをウェイクアップする最良の方法
for (int i = 0; i < 4; i++)
{
sem_post(&sem);
}
私はGoogleで検索してpthread_cond_t
ました。ただし、pthread_cond_broadcast
は、現在待機しているスレッドのみを起動できます。私がpthread_cond_wait
を手続きの冒頭に置いたとしても、(メインスレッド内)の前にpthread_cond_wait
が呼び出されていることは、まだ保証されていません。
これを避けるには、wait
とbroadcast
の呼び出しシーケンスを確実にするために、たくさんの追加コードを追加する必要があります。これはスマートではありません。
したがって、すべてのスレッドを「整列」させる簡単な方法があります(それらが同時に実行されるようにします)?
sem_post_multiple
があるようですが、pthreadではwin32拡張です。私はLinux(Android)を使用しています。
ありがとうございました。それはまさに私が欲しいものです。 Android NDKはpthread_barrier_tをサポートしていませんが、次の簡略化されたバージョンに従って実装できます:[simplified pthread_barrier_t](https://chromium.googlesource.com/external/google-breakpad/src.git/+/85e1fdcdc1029741a49d91b2e03e5d14aeee2765/common/android /testing/pthread_fixes.h) –
同期構造化のほとんどは他のツールで構築できますが、基本的にはmutexとcond.-variablesだけが必要です – Domso