当前位置: 首页 > 编程语言 > C#

Monitor.Enter和Monitor.Exit在不同线程中共享

时间:2023-04-11 00:56:32 C#

Monitor.Enter和Monitor.Exit在不同线程中Monitor.Enter和Monitor.Exit旨在从同一个线程调用。但是,如果我需要在与它获取的线程不同的线程中释放锁怎么办?例如:有共享资源和使用该资源的异步操作。该操作从BeginOperation开始,并获取共享资源上的锁。还有释放锁的EndOperation方法。EndOperation通常在另一个线程中从回调中调用,所以我不能在EndOperation方法中调用Monitor.Exit。在这种情况下,最好的方法是什么?用AutoResetEvent代替Monitor仔细检查锁是否是一个好的解决方案?尝试使用ManualResetEvent,它用于阻止thead(s),直到某些外部事件触发。MSDN文档:http://msdn.microsoft.com/en-us/library/system.threading.manualresetevent.aspx您正在寻找的原语称为信号量,可以安全地在一个线程上输入并从另一个退出访问.如果您可以使用.NET4.0,则可以将其替换为System.Threading.Semaphore,它允许您在一个线程中获取许可并在另一个线程中释放它们。Semaphore类在调用WaitOne或Release时不强制执行线程标识。以上就是C#学习教程的全部内容:Monitor.Enter和Monitor.Exit分线程共享。代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: