栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在C#中访问变量是原子操作吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在C#中访问变量是原子操作吗?

对于确定的答案,请转到规格。:)

CLI规范的第I部分,第12.6.6节指出:“符合规范的CLI必须保证对所有不超过本机字大小的正确对齐内存位置的读写访问是原子的,而对某个位置的所有写访问都相同。”

这样就可以确定s_Initialized永远不会不稳定,并且对小于32位的原始类型的读写是原子的。

特别是,

double
long
Int64
UInt64
不能
保证在32位平台上是原子的。您可以使用
Interlocked
类上的方法来保护这些方法。

另外,虽然读写是原子的,但由于必须读取,操作和重写原始类型,因此存在一种竞争条件,具有加,减,递增和递减原始类型。互锁的类使您可以使用

CompareExchange
Increment
方法保护它们。

互锁会形成内存屏障,以防止处理器对读取和写入进行重新排序。在此示例中,锁创建了唯一需要的屏障。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/411946.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号