2009-07-22 11 views
59

可能性の重複:
What are the differences between various threading synchronization options in C#?モニター

モニタおよびC#でミューテックスの違いは何ですか?

モニタを使用する場合、およびC#でミューテックスを使用する場合はいつですか?

+0

http://stackoverflow.com/questions/301160/what-are-the-differences-between-various-threading-synchronization-options-in-c – joe

+0

私はデフォルトでロックを使用することに同意しますが、 Monitor.Enter/Exit(1)タイムアウトが必要な場合、または2)ロックスコープが何らかの理由で単一のメソッドに制限されていない場合。 –

+0

追加ノートとして、モニターはWait/Pulseメソッドで「条件変数」と呼ばれることが多いものを提供します。これは、あるスレッドが別のスレッドがモニタ上のPulseを呼び出すまで何かを待つことを可能にします。 – nos

答えて

14

ミューテックスはプロセス間で共有することができ、モニタよりはるかに重いです。

プロセスの境界を越えて同期する必要がない限り、モニタを使用します。

39

Monitorは管理され、軽量ですが、AppDomainに限定されています。 A Mutexは名前を付けることができ、プロセス間に広がり(アプリケーション間の単純なIPCシナリオを可能にする)、待機ハンドルが必要なコードで使用できます。

ほとんどの単純なシナリオでは、Monitorlock経由)は問題ありません。

16

Joseph Albahariの "Threading in C#"は、このようなことに関する助言の良い源です。すべてのコンテンツはオンラインで入手できます。私の意見では、それはthe whole bookを読むために価値があるのですが、ヨーヨーは、これらの部品をチェックすることができます:Locking (C# Monitor)オン

.NET 4.0 new parallel constructsは含まれていませんが、非常に良い出発点です。

更新:本が更新されました。今度は、part 5の.NET 4.0並列プログラミングについて説明します。

関連する問題