NETスレッドのエキスパート.NETでロックと無名ミューテックスを使用するのはいつですか?
ロックはプロセス内のスレッド間で動作し、名前付きミューテックスはプロセス間で動作することがわかりました。しかし、 '名前のないmutex'もスレッド間で動作しているようです(ロックに似ています)。ロックが処理できない名前のないロックの実世界での使用について、誰かがこの光を放つことができますか?
ありがとうございます!
NETスレッドのエキスパート.NETでロックと無名ミューテックスを使用するのはいつですか?
ロックはプロセス内のスレッド間で動作し、名前付きミューテックスはプロセス間で動作することがわかりました。しかし、 '名前のないmutex'もスレッド間で動作しているようです(ロックに似ています)。ロックが処理できない名前のないロックの実世界での使用について、誰かがこの光を放つことができますか?
ありがとうございます!
Mutexesは、パラメータとして関数に渡すことができますが、ロックはできません。ミューテックスはMarshalByRefObject
であるので、AppDomains間で渡すこともできます。
プログラム内のAppDomainsをロックしたい場合があります。無名のミューテックスを使用することができるためです。
lock
は、いくつかのロジックが適用された低レベルのミューテックスの上に構築され、Mutex
は、それらの低レベルのミューテックスの直接管理されたラッパーです。それはどちらか/または状況として考えないでください。代わりにTcpClient
とWebClient
の関係のように考えると、WebClient
のすべてを実行するのにTcpClient
を使用できますが、上位レイヤの抽象化を使用する方が簡単ですあなたの仕事。
Thnx Scottです。つまり、mutexはロックよりも抽象的です。 –
'mutex'のようにOSのmutexを直接操作していないので、' lock'を「より抽象的」と呼びます。 –
C#のロックはmutexの上に実装され、両方とも同じ目的を果たします。しかし、ミューテックスは低レベルであり、OSのmutexに対する答えを管理しています。 – Saleem
.NETにスレッド同期を実装するには、複数の方法があります。 * lock *キーワードは、Monitorクラスのための簡単な抽象化であり、非常に頻繁にそのまま使用できます。あなたは自由にMutex、Semaphore/Slim、AutoResetEvent、ManualResetEvent/Slim、CountDownEvent、ReaderWriterLock/Slimクラスを持っています。 MSDNのドキュメントと多くのWebページでは、それらの機能をいつ使用するかを知る上で重要なことが重要です。あなたの答えは –