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