私の理解でpthread_cond_t
は、これはシグナル オブジェクトであり、Windows プラットフォームのイベントに似ています。
したがって、の基本機能はpthread_cond_t
それを待って通知する必要があります。インターフェイスは次のようになります。
int pthread_cond_wait(pthread_cond_t* cone);
int pthread_cond_singal(pthread_cond_t* cond);
しかし実際には、その機能に直接関係しない型パラメーターがpthread_cond_wait
必要です。mutex*
したがって、同じデータに同時にアクセスしないスレッド間の通信用のシグナルを作成したいだけでも、ミューテックスが必要です。
では、なぜインターフェイスをそのまま設計し、最終的にユーザーにオーバーヘッドを追加するのでしょうか?
Edit1:
条件付きデータを保護するためにミューテックスが使用されていることは知っていますが、ミューテックスを使用せずにインターフェイスを設計する場合は、ミューテックスと pthread_cond を組み合わせることで目標を達成することもできます。また、データを共有していないpthread_cond
他のスレッドに通知するために使用することもできます。
たとえば、ファイルを作成し、終了後に別のコンシューマーにファイルを処理するよう通知するプロデューサー スレッドを作成できます。データをミューテックスで保護する必要はありません。