web-dev-qa-db-ja.com

モニターとミューテックス

Mutexは相互排他を強制するために使用される値1(バイナリセマフォ)のセマフォであることを読みました。

私はこのリンクを読みます セマフォとモニター-違いは何ですか? これは、モニターが相互排除を達成するのに役立つと言います。

両方が実際に同じことをしているので、ミューテックスとモニターの違いを教えてもらえますか

27
Zephyr

あなたが話しているOSや言語/ライブラリを指定していないので、一般的な方法で答えさせてください。

概念的には同じです。ただし、通常はわずかに異なる方法で実装されます

モニター

通常、モニターの実装は、同じプロセス内のマルチスレッド同期用に設計されているため、より高速/軽量です。また、通常は、OSを要求するのではなく、フレームワーク/ライブラリ自体によって提供されます。

Mutex

通常、ミューテックスはOSカーネルによって提供され、ライブラリ/フレームワークはそれを呼び出すためのインターフェイスを提供するだけです。これにより、重量/速度は遅くなりますが、異なるプロセスのスレッド間で機能します。 OSは、別々の実行可能ファイルのインスタンス間で簡単に共有するために、名前でミューテックスにアクセスする機能も提供する場合があります(forkのみで使用できるハンドルを使用するのとは対照的です)。

19
Vikhram

モニターはミューテックスとは異なりますが、モニターはミューテックスの上に構築されるという意味で似ていると考えることができます。明確にするために、下部の画像でモニターの描写を参照してください。

Monitorは、スレッドに相互排他(ロックを使用)と協力の両方を持たせる同期構成です。つまり、スレッドが特定の条件を満たしていることを待機させる機能です。 (待機セットを使用)。

つまり、ロックを実装するデータとともに、すべてのJavaオブジェクトは待機セットを実装するデータに論理的に関連付けられます。一方、ロックは、スレッドが干渉せずに共有データ上で独立して動作するのに役立ちますまた、待機セットは、スレッドが相互に協力して共通の目標に向かって協力するのに役立ちます。たとえば、すべての待機スレッドはこの待機セットに移動され、ロックが解除されるとすべてが通知されます。ロックの追加ヘルプ(mutex)。

enter image description here

あなたが欲しい、あなたは私の答えを見ることができます here 、これはこの質問に関係があるかもしれません。

関連する別のディスカッションをここで見つけることができます

セマフォとモニター-違いは何ですか?

8
user4774371