【发布时间】:2012-06-12 17:29:45
【问题描述】:
Monitor.Enter 和Monitor.Exit 被设计为从同一个线程调用。但是,如果我需要在与获取的线程不同的线程中释放锁怎么办?
例如:有共享资源和使用该资源的异步操作。该操作以BeginOperation 开始,并获取共享资源上的锁。还有释放锁的EndOperation 方法。 EndOperation 通常在另一个线程中从回调中调用,因此我不能在 EndOperation 方法中调用 Monitor.Exit。在这种情况下,最好的方法是什么?使用AutoResetEvent 而不是Monitor 进行双重检查锁定会是一个好的解决方案吗?
【问题讨论】:
-
@pst 为什么是
Semaphore而不是Event?
标签: c# .net multithreading locking