何时在.NET中使用锁定和未命名的互斥锁?

时间:2016-04-19 13:27:15

标签: .net multithreading locking mutex

NET线程专家,

我知道锁可以在进程中的线程之间工作,而'named mutex'可以跨进程工作。然而,'未命名的互斥体'似乎也在跨线程工作(类似于锁)。现在有人可以说明锁定无法处理的未命名锁的现实世界使用吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

Mutexes可以作为参数传递给函数,锁不能。互斥锁也是MarshalByRefObject,因此可以在AppDomains之间传递。

有时您希望锁定程序中的AppDomain,因为您可以使用未命名的互斥锁。

lock建立在低级互斥锁之上,并且应用了一些逻辑,而Mutex只是这些低级互斥锁的直接托管包装器。不要将其视为两种情况,而是将其视为TcpClientWebClient的关系,您可以使用TcpClient来完成所有事情{{ 1}}但是更容易使用更高层的抽象来完成你的工作。