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

时间:2013-05-04 22:20:57

标签: c++ qt mutex

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

2 个答案:

答案 0 :(得分:2)

好吧,我根本看不到互斥锁的用途。 读取和写入m_abort都可以在没有互斥保护的情况下执行,因为它是bool变量,并且其值以原子方式更改(至少在大多数平台上)。即使写本身不是原子的并且变量可能具有不一致的值 - 它可以是false或true,并且最终将被读作true(因为在那里写的唯一值是{{ 1}})。

答案 1 :(得分:0)

大部分时间都会工作,但不是正确的事情。它应该被锁定。

另外,请查看Is Mutex required for 1 byte shared memory以获取更多信息。