我正在看这个例子,它给我提出了一个问题:当查看这个文件时,当访问全局变量 m_abort 被更改时,正在使用互斥锁。但是当 run 方法从中读取数据时,它对互斥体根本没有任何作用。为什么?
问问题
262 次
2 回答
2
好吧,我根本看不到互斥锁的用途。读取和写入m_abort
都可以在没有互斥保护的情况下执行,因为它是一个 bool 变量,并且它的值是原子更改的(至少在大多数平台上)。即使写入本身不是原子的并且变量可能具有不一致的值 - 它可以是假或真,并且最终将被读取为true
(因为写入的唯一值是true
)。
于 2013-05-04T22:34:58.983 回答
0
大部分时间都可以工作,但不是正确的做法。它应该被锁定。
此外,请查看Is Mutex required for 1 byte shared memory以获取更多信息。
于 2013-05-04T22:39:40.937 回答