问题
Possible Duplicate:
What are the differences between various threading synchronization options in C#?
What is the difference between a Monitor and a Mutex in C#?
When to use a Monitor and when to use a Mutex in C#?
回答1:
A Monitor
is managed, and more lightweight - but is restricted to your AppDomain
. A Mutex
can be named, and can span processes (allowing some simple IPC scenarios between applications), and can be used in code that wants a wait-handle).
For most simple scenarios, Monitor
(via lock
) is fine.
回答2:
A good source of advice on this stuff is the "Threading in C#" by Joseph Albahari. All the content is available online. In my opinion, it's worth to read the whole book, but yo can check these parts:
On Locking (C# Monitor);
On Mutex.
Although it does not cover .NET 4.0 new parallel constructs, it's a very good starting point.
Update: The book has been updated. Now, it covers .NET 4.0 Parallel Programming in its part 5.
回答3:
A Mutex can be shared across processes, and is much more heavy-weight than a Monitor.
Use a Monitor unless you need to synchronize across process boundaries.
来源:https://stackoverflow.com/questions/1164038/monitor-vs-mutex-in-c-sharp