Qt示例:没有互斥锁时读取,为什么

Qt example: no mutex lock when reading, why?

本文关键字:读取 为什么 示例 Qt      更新时间:2023-10-16

我正在看这个例子,它为我提出了一个问题:当查看这个文件时,在访问全局变量m_abort时正在使用互斥锁。但是当run方法从中读取时,它对互斥对象根本不做任何操作。为什么?

我根本看不出互斥锁的作用。读写m_abort都可以在没有互斥锁保护的情况下执行,因为它是一个bool变量,并且它的值是自动更改的(至少在大多数平台上)。即使写入本身不是原子的,变量可以有一个不一致的值-它可以是false或true,它最终将被读取为true(因为唯一写入的值是true)。

大多数情况下会有效,但不是正确的做法。它应该被锁起来。