1

モニターの相互排除がプロシージャ/メソッド レベルなのか、それともモニター レベルなのかを知りたいだけです。

つまり、最初のケースでは、モニターにアクセスする 2 つのスレッドが存在する可能性がありますが、それらは異なる手順で実行されます。2 番目のケースでは、2 つの異なるプロシージャが呼び出されたとしても、2 つのスレッドがモニターにアクセスすることはありません。

モニターレベルであると仮定すると、はるかに安全に思えます。ただし、モニターで 2 つの異なるスレッドが実行され、それぞれが異なる共有変数を変更している可能性があり、モニターがこれを許可しないという状況はありませんか? その場合、システムの同時実行性が低下しませんか? それとも、1 つではなく 2 つのモニターを作成する必要があるということでしょうか?

わかりました、哲学を終わらせた方がいいです:) よろしくお願いします

4

2 に答える 2

0

モニターのロックは、呼び出し元のメソッドから完全に独立しています。
そうでなければ、2つの異なるメソッドが同時に実行されるのを防ぐことは非常に困難でした。

望まない場合は、複数のモニターを使用してください。

于 2012-02-09T21:54:53.393 に答える
0

モニター操作のメカニズムは、スレッドまたはプロセスのシリアル化です。したがって、モニターは、並行性の状況で相互排除を保証するスキルです。

于 2012-03-30T01:46:17.840 に答える