2

私がミューテックスについて学んだことから、ミューテックスは通常、共有リソースのロック機能を提供します。したがって、新しいスレッドがこのロックされた共有リソースにアクセスしたい場合は、終了するか、ロックを継続的にポーリングする必要があります(そして、ロックを待機する際にプロセッササイクルを浪費します)。

ただし、モニターには条件変数があり、スレッドを待機キューに入れてプロセッサーサイクルを消費させないようにすることで、スレッドを待機するためのより非同期的な方法を提供します。

これは、ミューテックス(または条件変数のない一般的なロックメカニズム)に対するモニターの唯一の利点でしょうか?

4

2 に答える 2

5

ミューテックスは低レベルの構成です。それらは、相互排除とメモリの可視性/順序付けを提供するだけです。一方、モニターはより高いレベルです。モニターを使用すると、スレッドはアプリケーション固有の条件が保持されるのを待つことができます。

したがって、モニターが単純なロック/ロック解除よりも過剰な場合もありますが、ほとんどの場合、ミューテックスだけでは十分ではありません。したがって、1つ以上の条件変数で使用されていることがわかります。概念的には、同等のモニターを使用しています。

于 2011-10-26T16:20:04.137 に答える
1

モニターはオブジェクトをロックします(マルチスレッドは同時にオブジェクトにアクセスできません)。ミューテックスはプロセスをロックします(マルチスレッドは1つだけがプロセスを通過できます)。

于 2013-04-28T07:18:39.820 に答える