pthread lock を関数に渡しても大丈夫ですか? 私がこれを求めている理由は、コンシューマーとして機能する多数のスレッド (10 としましょう) と 2 つのプロデューサーがあり、各コンシューマー スレッドには独自のリンク リスト (バッファー) があり、プロデューサーはこれらのいずれかにデータを送信するためです。スレッドは特定のルールに基づいてスレッド化されるため、プロデューサ 1 がコンシューマ 1 に送信し、次にコンシューマ 2 に送信してから、コンシューマ 1 に戻すというように送信することがあります。
そこで考えているのが、
プロデューサー 1 がコンシューマー 5 に送信したい場合、
- Producer 1 は関数 linked-list を呼び出してデータ (IPC) を共有し、lock[5] をこの関数に渡します。この場合は lock 5 になります。
- 関数 linked-list は lock[5] をロックし、linked-list を更新します
- コンシューマ 5 がリンクされた関数関数を呼び出すと、ロックが渡され (コンシューマ 5 は常に lock[5] を使用します)、プロデューサがすでにこのロックをロックしている場合は待機します。
lock の名前は main() で共有されることに注意してください
pthread_mutex_t lock[10];
Linux で gcc を使用しています。説明が下手なので、質問が明確でない場合はお知らせください。