問題タブ [binary-semaphore]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
synchronization - 生産者と消費者の問題でバッファーにアクセスする際にミューテックス ロックを使用することは厳密に必要ですか?
以下は、 Galvin などによるオペレーティング システムの概念で与えられた生産者と消費者の問題の疑似コードです。アル。
n
プールは、それぞれが 1 つの項目を保持できるバッファーで構成されていると想定しています。ミューテックス バイナリ セマフォは、バッファ プールへのアクセスに対して相互排除を提供し、値に初期化されます1
。
以下は、プロデューサーの構造の疑似コードです。
以下は、コンシューマーの構造の疑似コードです。
上記は、テキストに関する限りです。もう少し先に進み、バッファの働きも含めてみましょう。バッファchar buffer[n]
として機能する 2 つのプロセス間の共有配列とします。したがって、次のようになります。
テキストはバッファーにアクセスする前にミューテックスロックを使用していますが (論理的には、バッファーは共有アイテムであるため、相互に排他的な方法でアクセスする必要があります)、アクセス中にミューテックスを使用する必要は厳密にはないと思います。プロデューサーとコンシューマーは同時にバッファーにアクセスできますが、配列の同じ場所に同時にアクセスすることはできないと思います。buffer
同じ場所に同時にアクセスできないため、競合状態の可能性はありません...
これが私が感じていることです。間違っている場合は修正してください。また、間違えた箇所を教えてください。ありがとうございました。