Monitor
は管理され、より軽量になりますが、AppDomain
に制限されます。 Mutex
は名前を付けることができ、プロセスにまたがることができ(アプリケーション間でいくつかの単純なIPCシナリオを許可)、待機ハンドルが必要なコードで使用できます)。
ほとんどの単純なシナリオでは、Monitor
(lock
経由)で十分です。
このことに関する良いアドバイスは、Joseph Albahariによる「Threading in C#」です。すべてのコンテンツはオンラインで入手できます。私の意見では、 本全体 を読む価値がありますが、これらの部分を確認できます:
オン ロック(C#モニター) ;
オン Mutex 。
。NET 4.0の新しい並列構造 はカバーしていませんが、非常に良い出発点です。
Update:本は更新されました。現在、 パート5 で.NET 4.0並列プログラミングを扱っています。
Mutexはプロセス間で共有でき、モニターよりもはるかに重いです。
プロセスの境界を越えて同期する必要がない限り、モニターを使用します。