i++是否是原子指令?
有一个题:两个线程同时访问一个变量i,一个执行i++,一个执行i--,各执行100次,假如i初始为0,到最后两个线程结束之后,i是否一定是0?
windows核心编程上说,不会,原因是编译成汇编指令之后成了多条指令,会出现中断,但是我在windows程序设计书上看到说像i++这样操作在32位平台上被编译成一条机器码指令,是否意味着结果总是0?该怎样去理解?
[解决办法]
i++基本不会是一条机器码,++i都不一定是一条。
[解决办法]
inc [ebp-28] ?
???
mov %eax,(%ebx-28)
add %eax,$1
mov (%ebx-28),%eax
[解决办法]
可能是可能不是
[解决办法]