Критические разделы - контроль доступа
У меня есть 1 критический раздел (раздел A) и два других раздела (B и C). Я пытаюсь достичь этих двух целей:
Если поток попадает в раздел A, я хочу убедиться, что разделы B и C не могут быть выполнены любым другим потоком (на время раздела A).
Однако, если секция A не выполняется, секции B и C могут выполняться любым количеством потоков.
Очевидно, используя lock
на всех трех разделах не помогает: это отвечало бы первому требованию, но не второму. B и C не смогут работать одновременно при нормальных обстоятельствах.
Как мне это сделать?
(Извиняюсь за смутное название)
1 ответ
Возможно, вы можете использовать ReaderWriterLock, где B и C (AcquireReaderLock) могут входить как читатели, в то время как A (AcquireWriterLock) входит как писатель.
http://msdn.microsoft.com/en-us/library/system.threading.readerwriterlock.aspx
Это именно то, для чего предназначен этот класс.