请问昨天的一个笔试题目
请教昨天的一个笔试题目
在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是原子操作
在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是原子操作