がある:
1つの条件変数"var":varの値は0または1のみです。
1つのプロバイダースレッド「thP」:ネットからデータを受信したら、var 1(使用可能)を設定します。
1つのコンシューマスレッド「thC」:varのwait()。varを取得したら、0(使用不可)に設定し、後で何かを処理します。
。
この単純なモデルを実装する2つの方法を見つけました。
(1)変数としてpthread_cond_tを使用します。このメソッドには、スレッドがクリーンアップされている間にミューテックスのロックを解除するための追加のミューテックスとコールバック関数が必要です。
(2)sem_tをvarとして使用します。このメソッドは、「var>1」の状況を引き起こす可能性があります。thCは、varの値を1に減らすために、複数のwait()操作を実行する場合があります。
。
質問は:
この単純なモデル「単一プロバイダー、単一コンシューマー、1つの条件変数」を実装するには、var、pthread_cond_t、sem_tにどのタイプを使用するか、または単にpthread_mutex_tをバイナリセマフォとして使用する必要がありますか?
。
どうもありがとう!