C 语言 int 读写是否需要加锁


CPU 同内存交换数据的最小内存单位为4字节,即32位由CPU总线决定,所以小于4 字节的读取或者赋值操作无需加锁。
即使不加锁也不会出现读取到的4字节中一半数据被改一半数据没有被改的情况。

但对 i++ 这类组合操作,仍可能需加锁. 因为i++是至少一次读取i一次写入i这两条命令,中间被打断就无法保证++n次之后值确实被加了n。
当然倘若我们的i++只是做一个示意性的统计,允许偶尔的操作遗漏,那就直接操作好多,只是最终的结果可能少加了几个。

posted @ 2021-06-17 00:26  dzqabc  阅读(504)  评论(0编辑  收藏  举报