可能性の重複:
What are the differences between various threading synchronization options in C#?モニター
モニタおよびC#でミューテックスの違いは何ですか?
モニタを使用する場合、およびC#でミューテックスを使用する場合はいつですか?
可能性の重複:
What are the differences between various threading synchronization options in C#?モニター
モニタおよびC#でミューテックスの違いは何ですか?
モニタを使用する場合、およびC#でミューテックスを使用する場合はいつですか?
ミューテックスはプロセス間で共有することができ、モニタよりはるかに重いです。
プロセスの境界を越えて同期する必要がない限り、モニタを使用します。
Monitor
は管理され、軽量ですが、AppDomain
に限定されています。 A Mutex
は名前を付けることができ、プロセス間に広がり(アプリケーション間の単純なIPCシナリオを可能にする)、待機ハンドルが必要なコードで使用できます。
ほとんどの単純なシナリオでは、Monitor
(lock
経由)は問題ありません。
Joseph Albahariの "Threading in C#"は、このようなことに関する助言の良い源です。すべてのコンテンツはオンラインで入手できます。私の意見では、それはthe whole bookを読むために価値があるのですが、ヨーヨーは、これらの部品をチェックすることができます:Locking (C# Monitor)オン
を。
オンMutex。
.NET 4.0 new parallel constructsは含まれていませんが、非常に良い出発点です。
更新:本が更新されました。今度は、part 5の.NET 4.0並列プログラミングについて説明します。
http://stackoverflow.com/questions/301160/what-are-the-differences-between-various-threading-synchronization-options-in-c – joe
私はデフォルトでロックを使用することに同意しますが、 Monitor.Enter/Exit(1)タイムアウトが必要な場合、または2)ロックスコープが何らかの理由で単一のメソッドに制限されていない場合。 –
追加ノートとして、モニターはWait/Pulseメソッドで「条件変数」と呼ばれることが多いものを提供します。これは、あるスレッドが別のスレッドがモニタ上のPulseを呼び出すまで何かを待つことを可能にします。 – nos