gpt4 book ai didi

c++ - 没有 CCriticalSection 或 CMutex 的锁处理

转载 作者:太空宇宙 更新时间:2023-11-04 14:16:25 26 4
gpt4 key购买 nike

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

我考虑过只设置一个 bool 值告诉工作人员停止,然后 Sleep() 大约一秒钟(让他们完成),进行更新,然后重置 bool 值。这似乎..嗯..用力过猛。

最佳答案

您可以使用读/写锁,http://en.wikipedia.org/wiki/Readers%E2%80%93writer_lock哪个会给你有效的保护

关于c++ - 没有 CCriticalSection 或 CMutex 的锁处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10821201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com