首页 > 试题广场 >

以下多线程对int型变量x的操作,哪几个需要进行同步()?

[不定项选择题]
以下多线程对int型变量x的操作,哪几个需要进行同步()
  • x=y
  • ++x
  • x=1
  • x++
A,因为y的初值不确定,所以要加锁。
B和D需要执行2步操作,所以也需要加锁。
C为赋值操作,且“1”已知,无需加锁。
所以选ABD
发表于 2017-08-26 16:00:19 回复(0)
题意:同时有多个线程对x变量进行如下操作时,哪些操作会使结果可能出现错误?
A. x = y            // 每个线程使用的y值可能不同,因此可能出现覆盖写的情况;
B. ++x              // 先读出x,再将x+1的值,写入x。同时存在两个线程读取x,并写入x+1,将导致覆盖写;
C. x = 1            // 多个线程的赋值是一样的,因此出现异常情况;
D. x++              // 先保存旧的x值,之后将x+1的值,写入x,并返回旧值。同B选项,多步操作,可能导致异常。
发表于 2019-07-27 16:04:15 回复(0)
赋值为未知加锁
发表于 2017-09-01 21:25:12 回复(0)
这确定是C语言里面的嘛
发表于 2022-11-26 21:22:38 回复(0)
<p>常量赋值,不用加锁</p>
发表于 2020-07-22 21:14:49 回复(0)
原子操作,应该是只有一句汇编指令的操作
发表于 2022-08-29 17:02:49 回复(0)
c为什么不对,它也是赋值操作
发表于 2019-03-07 07:40:05 回复(2)
A就不解释了
BD就不是原子操作  肯定多线程需要同步    为什么不是原子操作 百度吧  学习吧   太多啦! 
发表于 2017-10-05 23:58:24 回复(0)
这道题本质考察的是原子操作。理论上只要不是原子操作的都需要加锁
发表于 2017-08-31 17:03:37 回复(0)
不会
发表于 2017-08-18 13:37:36 回复(0)