スレッドを使用した奇数偶数印刷 この質問に出くわし、 C++ での解決策について話し合いたいと思いました。奇数セマフォと偶数セマフォの 2 つのバイナリ セマフォを使用して考えられること。偶数セマフォは 1 に、奇数セマフォは 0 に初期化されます。
**T1 thread function**
funOdd()
{
wait(even)
print odd;
signal(odd)
}
**T2 thread function**
funEven()
{
wait(odd)
print even
signal(even)
}
これに加えて、関数が数値のみを生成し、それらの数値を出力する 3 番目のスレッド T3 がある場合、理想的な設計は何ですか? 奇数が奇数の位置に配置され、偶数が偶数の位置に配置される配列を使用しました。T3 はこの配列から読み取ります。これにより、この配列に対するスレッド セーフが回避されます。T3 がインデックスを見つけられない場合は、そのインデックスが作成されるまで待機します。もう 1 つの解決策は、挿入中に T1 と T2 が使用できるミューテックスを持つキューを使用することです。
このソリューションについてコメントし、どうすればより効率的にすることができますか。
編集して問題を明確にします: 全体的な問題は、2 つのプロデューサー (T1、T2) と 1 つのコンシューマー (T3) があり、プロデューサーが相互に依存していることです。