关键部分 - 控制访问

时间:2013-10-10 09:30:23

标签: c# .net multithreading locking critical-section

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

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

  2. 但是,如果A部分正在运行,那么B和C部分可以由任意数量的线程执行。

  3. 显然,在所有三个部分上使用lock没有帮助:这将满足第一个要求,但不符合第二个要求。在正常情况下,B和C将无法同时运行。

    我如何做到这一点?

    (为模糊标题道歉)

1 个答案:

答案 0 :(得分:1)

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

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

这正是该课程的意思。