0

我有 1 个关键部分(A 部分)和另外两个部分(B 和 C)。我正在努力实现这两个目标:

  1. 如果一个线程到达 A 部分,我想确保 B 和 C 部分不能被任何其他线程执行(在 A 部分的持续时间内)。

  2. 但是,如果 A 部分没有运行,则 B 和 C 部分可以由任意数量的线程执行。

显然,lock在所有三个部分上都使用 a 并没有帮助:这将满足第一个要求,但不满足第二个要求。B和C在正常情况下是不能同时运行的。

我该如何做到这一点?

(为模糊的标题道歉)

4

1 回答 1

1

也许您可以使用 ReaderWriterLock,其中 B 和 C (AcquireReaderLock) 可以作为读取器进入,而 A (AcquireWriterLock) 作为写入器进入。

http://msdn.microsoft.com/en-us/library/system.threading.readerwriterlock.aspx

这正是该课程的目的。

于 2013-10-10T09:33:26.700 回答