問題タブ [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.

0 投票する
0 に答える
90 参照

synchronization - 生産者と消費者の問題でバッファーにアクセスする際にミューテックス ロックを使用することは厳密に必要ですか?

以下は、 Galvin などによるオペレーティング システムの概念で与えられた生産者と消費者の問題の疑似コードです。アル。

nプールは、それぞれが 1 つの項目を保持できるバッファーで構成されていると想定しています。ミューテックス バイナリ セマフォは、バッファ プールへのアクセスに対して相互排除を提供し、値に初期化されます1

以下は、プロデューサーの構造の疑似コードです。

以下は、コンシューマーの構造の疑似コードです。

上記は、テキストに関する限りです。もう少し先に進み、バッファの働きも含めてみましょう。バッファchar buffer[n]として機能する 2 つのプロセス間の共有配列とします。したがって、次のようになります。

テキストはバッファーにアクセスする前にミューテックスロックを使用していますが (論理的には、バッファーは共有アイテムであるため、相互に排他的な方法でアクセスする必要があります)、アクセス中にミューテックスを使用する必要は厳密にはないと思います。プロデューサーとコンシューマーは同時にバッファーにアクセスできますが、配列の同じ場所に同時にアクセスすることはできないと思います。buffer同じ場所に同時にアクセスできないため、競合状態の可能性はありません...

これが私が感じていることです。間違っている場合は修正してください。また、間違えた箇所を教えてください。ありがとうございました。