Qt示例:没有互斥锁时读取,为什么
Qt example: no mutex lock when reading, why?
我正在看这个例子,它为我提出了一个问题:当查看这个文件时,在访问全局变量m_abort时正在使用互斥锁。但是当run方法从中读取时,它对互斥对象根本不做任何操作。为什么?
我根本看不出互斥锁的作用。读写m_abort
都可以在没有互斥锁保护的情况下执行,因为它是一个bool变量,并且它的值是自动更改的(至少在大多数平台上)。即使写入本身不是原子的,变量可以有一个不一致的值-它可以是false或true,它最终将被读取为true
(因为唯一写入的值是true
)。
大多数情况下会有效,但不是正确的做法。它应该被锁起来。
相关文章:
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 为什么在读取文件大小时文件IO速度会发生变化
- 为什么文件名被设置为一个点,而不是在读取矢量中的文件名时
- 为什么C++的文件 I/O 在读取文本文件时忽略初始空行?我怎样才能让它不这样做?
- 为什么缓冲区的内容在读取空 rdbuf 时被删除?
- 为什么 getline() 不读取文本文件中的所有内容?
- 为什么我无法打开/读取从 Python 调用的 C 扩展名中的 txt 文件?
- 为什么我要从串口读取垃圾?
- 为什么我的静态分析器找不到潜在的未初始化读取?
- 为什么读取函数在 sha1 c++ 实现中不起作用?
- 为什么我的程序在读取/写入文件时会删除最重要的数字?
- 为什么我可以从C++文件中读取 int 值,但不能浮点?
- 蓝牙插座只能读取一次,为什么?
- 为什么 Clang std::ostream 写一个 std::istream 无法读取的双精度?
- 为什么从 std::cin 读取输入后右括号字符的值有时不是")"?
- 为什么我的驱动程序只读取部分字符串?
- 为什么不读取带有指针的结构?
- 为什么ifstream没有读取任何内容
- 为什么我在蓝牙连接()上收到"java.io.IOException:读取失败,套接字可能关闭或超时,读取re
- 为什么我的 cout 一次执行,尽管 cin 应该在两者之间读取?