【发布时间】:2018-06-12 17:11:49
【问题描述】:
我仍然不确定这两个调用之间的区别。来自 MSDN,
Monitor.Enter(Object)获取指定对象的排他锁。
Monitor.Wait(Object) 释放对象上的锁并阻塞当前线程,直到它重新获得锁为止。
据此,我假设 Monitor.Wait 与 Monitor.Enter 相同,只是它在重新获取之前先释放对象上的锁定。
当前线程是否必须首先拥有锁?不同的线程如何强制释放对象的锁?为什么同一个线程要重新获取锁?
【问题讨论】:
-
Enter/Exit 为互斥,Wait/Pulse(All) 为等待和信令。见en.wikipedia.org/wiki/Monitor_(synchronization)
标签: c# multithreading locking