读书人

请问昨天的一个笔试题目

发布时间: 2012-10-07 17:28:51 作者: rapoo

请教昨天的一个笔试题目
在Intel CPU上,以下多线程对int型变量x的操作,哪几个不是原子操作,假定变量的地址都是对齐的 [多项选择]( )
A. x=y
B. x++
C. ++x
D. x=1

A的过程为,取y的值到寄存器,然后把寄存器的值给x所在的内存。 所以A不是原子操作

B. 开辟一个临时变量。然后把原来的变量+1操作。 应当也不是原子操作。

C。 直接 inc, 应当是原子操作

D. 原子操作。

请教一下上面理解正确吗?

[解决办法]
只有D是原子操作
[解决办法]
lz理解基本正确,理论上3实际上保证不了,不过现在的硬件基本都支持3是原子操作

读书人网 >C++

热点推荐