这是场景。我有多个处理器线程读取一个值。只允许1个线程写入该值。由于该设置,自然不会有人在写入过程中读取。因此,当1个人正在写入新值时,CCriticalSection将锁定所有辅助线程。但是,如果我这样做,那么每次有人希望查看它时,所有辅助线程都会停止(它们相互锁定)。由于所有工作人员都必须停下来排队等候读取值,因此它在处理中造成瓶颈。除了CCriticalSection之外,是否有某种方法可以允许所有小工作人员继续读取(这很好,那里没有线程问题),但是只有在主线程要写入它时才停止它们?

我考虑过只设置一个布尔值,告诉工作人员停止,然后睡眠()一秒钟左右(让他们完成),进行更新,然后重置布尔值。似乎..好..重手。

最佳答案

您可以使用读/写锁,http://en.wikipedia.org/wiki/Readers%E2%80%93writer_lock
这将为您提供有效的保护

10-04 09:56