首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >变量读写的原子性

变量读写的原子性
EN

Stack Overflow用户
提问于 2017-03-20 21:26:40
回答 1查看 153关注 0票数 1

我刚读了一个问题这里,读了@ just给我的最有评价的答案,我感到很困惑.根据答案,在以下代码中,

代码语言:javascript
复制
private int a=0;

public void foo(){
  int temp=35;
  a=28;
  a=temp;
}

a=28;是一个原子操作。

在我在Stackoverflow中看到的其他一些问答中,信息是不同的,它说a=28;而不是--一个原子操作,因为首先应该对正确的操作进行读操作,然后进行写操作,这两个操作中的每一个都是原子操作,但是整个分配不是(老实说,我认为它是这样工作的)。

那么a=temp;呢?它在原子性方面与a=28;有什么不同吗?

顺便说一句,我知道双倍和长的易失性需要使它们读/写成原子,只是对我上面写的东西感到困惑。

能请人详细说明一下吗?

谢谢..

EN

回答 1

Stack Overflow用户

发布于 2017-03-20 21:35:10

根据正式文件

读和写对于引用变量和大多数原始变量(除了长和双)都是原子的。

因为a=28;是对一个基元的写,它不是长的或双倍的,所以它是原子的。

但是,a=temp并不是原子的,因为它由两个独立的操作组成--从temp读取和对int的写入。每一个都是原子的,但不是它们的组成。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42914267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档