Monitor(监视器)
是被管理的并且更轻量级 - 但仅限于您的AppDomain(应用程序域)
。 Mutex(互斥量)
可以命名,并且可以跨进程(允许一些简单的应用程序之间的IPC场景),并且可以在需要等待句柄的代码中使用。
对于大多数简单情况,Monitor(监视器)
(通过lock(锁)
)已足够。
一本关于这方面的良好建议来源是Joseph Albahari的"Threading in C#"。所有内容都可以在线获取。在我看来,值得阅读整本书,但您可以查看以下部分:
尽管它没有涵盖.NET 4.0新并行结构,但它是一个非常好的起点。
更新:该书已更新。现在,其第5部分涵盖了.NET 4.0并行编程。
互斥锁(Mutex)可以在进程之间共享,而且比监视器(Monitor)更加重量级。
除非需要跨进程同步,否则请使用监视器。