首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >复合赋值在C#中是原子的吗?

复合赋值在C#中是原子的吗?
EN

Stack Overflow用户
提问于 2011-06-09 19:22:33
回答 3查看 230关注 0票数 2

我想知道复合赋值^=在C#中是否是原子的。我真正需要做的是使用单个原子操作旋转一个Int32变量(如果值为0,则将其设置为1,如果为1,则将其设置为0)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-09 19:58:37

如上所述,x^=1不是原子的。您是否可以使用Interlocked.Increment (它是原子的),然后在读取时考虑值% 2?

票数 4
EN

Stack Overflow用户

发布于 2011-06-09 19:27:49

保证是原子的操作被收集在Interlocked类中。请参阅http://msdn.microsoft.com/en-us/library/system.threading.interlocked.aspx

票数 3
EN

Stack Overflow用户

发布于 2011-06-09 19:29:50

复合赋值不是原子的。例如,x += 1是一个语法糖,用于从内存中读取x,添加1,并将值写回内存。

如果你想很好地解释什么是原子,什么不是原子,请阅读Eric Lippert关于这个主题的博客文章:Atomicity, volatitly and immutability are different

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

https://stackoverflow.com/questions/6291994

复制
相关文章

相似问题

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