gpt4 book ai didi

c++ - QMutex 需要读取变量

转载 作者:行者123 更新时间:2023-11-28 03:16:19 25 4
gpt4 key购买 nike

我通过通常受相应互斥锁保护的公共(public)可访问成员变量来命令我的线程。

我的问题是:如果单个变量在写访问期间受互斥量保护它是否也应该在读取访问期间受到保护,还是我可以简单地读取它?

示例:
一个线程检查是否应该做一些特殊的事情
(doSpecial 写在另一个线程)

// some code
if (doSpecial) {
// code
}
// some code

这种读访问是否应该受互斥量保护?

最佳答案

是的,如果变量在一个线程上被修改并在其他线程上访问,那么所有访问都必须由互斥体保护。如果没有那个,或者其他一些同步方法,就不能保证修改是原子的(因此其他线程可能会读取损坏的值),也不能保证其他线程会看到修改后的值(它可能保留在一个处理器的缓存中,永远不会传播给其他人)。

在 C++11 中,对于简单类型,您可能会考虑 std::atomic 而不是受互斥锁保护的非原子变量。

关于c++ - QMutex 需要读取变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16773515/

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