最近天天专注于复习专业课知识,准备迎接十月份的校园招聘。在网上看了几套百度的笔试试题,其中有一道给我留下了深刻的印象。题目如下:
以下多线程对int型变量x的操作,哪几个需要进行同步:( )
A. x=y; B. x++; C. ++x; D. x=1;
从表面看上去实在是看不出什么突破口,我们不妨将这些代码译成汇编语言再来分析。
01 x = y;
02 mov eax,dword ptr [y]
03 mov dword ptr [x],eax
04
05 x++;
06 mov eax,dword ptr [x]
07 add eax,1
08 mov dword ptr [x],eax
09
10 ++x;
11 mov eax,dword ptr [x]
12 add eax,1
13 mov dword ptr [x],eax
14
15 x = 1;
16 mov dword ptr [x],1
(1