标题:关于线程的一道笔试题
只看楼主
黄河十三号
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2012-3-28
结帖率:80%
 问题点数:0 回复次数:2 
关于线程的一道笔试题
    int i = 0;

线程1:
    ++i;
    ++i;    

线程2:
    i += 2;

问最终i的值可能是多少(不定项选择)

A.1  B.2  C.3  D.4

求具体分析
搜索更多相关主题的帖子: 试题 
2013-04-28 11:32
黄河十三号
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2012-3-28
得分:0 
没人么??
2013-05-01 11:33
qqzxingchen
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2013-5-27
得分:0 
多线程之所以会导致运行结果不确定,是因为每个线程在任何运行时刻都有可能被打断。即我们看到的这些 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:主要是现在好困,没精力分析了,交给你自己了
2013-05-28 18:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-405818-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.152784 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved