编程论坛
注册
登录
编程论坛
→
Windows论坛
关于线程的一道笔试题
黄河十三号
发布于 2013-04-28 11:32, 197 次点击
int i = 0;
线程1:
++i;
++i;
线程2:
i += 2;
问最终i的值可能是多少(不定项选择)
A.1 B.2 C.3 D.4
求具体分析
2 回复
#2
黄河十三号
2013-05-01 11:33
没人么??
#3
qqzxingchen
2013-05-28 18:25
多线程之所以会导致运行结果不确定,是因为每个线程在任何运行时刻都有可能被打断。即我们看到的这些 i++,++i,i+=2都不是原子级的指令。要分析所有可能的情况,应该把它们翻译成原子级的。如:
线程1:
mov eax,i
inc eax
mov i,eax
mov eax,i
inc eax
mov i,eax
线程2:
mov eax,i
add eax,2
mov i,eax
注:我没记错的话,在线程切换的时候,eax寄存器的值会被更新。也就是说,线程1和线程2的eax是无关的。
其余的你应该可以自己分析了吧
(ps:主要是现在好困,没精力分析了,交给你自己了
)
1