这是场景。我有多个处理器线程读取一个值。只允许 1 个线程写入该值。由于设置,自然地,在写入过程中没有人可以读取。因此,当 1 个人写入新值时,CCriticalSection 将锁定所有工作线程。但是,如果我这样做,每次有人想要查看它时,所有工作线程都会停止(它们互相锁定)。它在处理过程中造成了瓶颈,因为所有工人都必须停下来排队才能读取值。除了 CCriticalSection 之外,还有什么方法可以让所有小工作者继续阅读(这很好,那里没有线程问题),但只有在主线程想要写入时才停止它们?
我考虑过设置一个布尔值,告诉工作人员停止,然后 Sleep() 大约一秒钟(让他们完成),进行更新,然后重置布尔值。这似乎..好吧..重手。