首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
以下多线程对 int 型变量x的操作,哪几个需要进行同步?
[不定项选择题]
以下多线程对 int 型变量x的操作,哪几个需要进行同步:
x=y
x++
++x
x=1
添加笔记
求解答(10)
邀请回答
收藏(38)
分享
纠错
3个回答
添加回答
7
牛客304487号
ABC
A:在X86上它包含两个操作:读取y至寄存器,再把该值写入x。读y的值这个操作本身是原子的,把值写入x也是原子的,但是两者合起来不是原子操作,因为它不是不可再分的操作,所以需要进行同步
B、C:x++和++x这样的操作在多线程环境下是需要同步的。因为X86会按三条指令的形式来处理这种语句:从内存中读x的值到寄存器中,对寄存器加1,再把新值写回x 所处的内存地址
D:x=1是原子操作,不可再分
发表于 2015-06-29 20:41:55
回复(0)
8
SunburstRun
答案是 ABC
这个题只要看操作受不受多线程的影响,是否加锁
A,因为y的初值不确定,所以要加锁
B和C却需要执行2步操作,所以也需要加锁
只有D的结果不受多线程影响
所以选ABC
发表于 2015-06-29 12:50:53
回复(0)
0
单程车票
ABC
思路:参见博客:http://blog.chinaunix.net/uid-669974-id-304287.html ,博主用汇编看了下,ABC都是写简单数据类型,并且操作的结果与初值有关.所以需要加锁
发表于 2015-01-20 11:00:24
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
百度
并发
操作系统
上传者:
黑河
难度:
3条回答
38收藏
20655浏览
热门推荐
相关试题
请编写实现malloc()内存分配...
微软
C++
操作系统
评论
(3)
无锁化编程有哪些常见方法?
阿里巴巴
并发
评论
(39)
来自
阿里巴巴2015实习生笔试题
仅用O(1)的空间,将整数数组按奇...
百度
2011
C++
Java
编程基础
Java工程师
C++工程师
评论
(25)
来自
百度2011研发工程师笔试卷
设某二叉树的先序遍历序列为abdg...
树
评论
(1)
2022 诺瓦科技 Perl re...
perl
System Verilog
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题