i++和++i是否为原子操作

来源:互联网 发布:c mfc编程 编辑:程序博客网 时间:2024/05/19 20:22

一.i++

i++的操作分三步:

(1)栈中取出i

(2)i自增1

(3)将i存到栈

所以i++不是原子操作,上面的三个步骤中任何一个步骤同时操作,都可能导致i的值不正确自增

二.++i

在多核的机器上,cpu在读取内存i时也会可能发生同时读取到同一值,这就导致两次自增,实际只增加了一次。


综上,我认为i++和++i都不是原子操作。


0 0
原创粉丝点击