我有1个关键部分(A部分)和另外2个部分(B和C)。 我正在努力实现这两个目标:
如果一个线程遇到A部分,我想确保B和C部分不能被任何其他线程执行(在A部分的持续时间内)。
但是,如果A部分不正在运行,那么B和C部分可以由任意数量的线程执行。
显然,在所有三个部分上使用lock
没有帮助:这将满足第一个要求,但不符合第二个要求。在正常情况下,B和C将无法同时运行。
我如何做到这一点?
(为模糊标题道歉)
答案 0 :(得分:1)
也许您可以使用ReaderWriterLock,其中B和C(AcquireReaderLock)可以作为读者进入,而A(AcquireWriterLock)作为作者进入。
http://msdn.microsoft.com/en-us/library/system.threading.readerwriterlock.aspx
这正是该课程的意思。