首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Interlocked.Increment整数数组

Interlocked.Increment整数数组
EN

Stack Overflow用户
提问于 2012-10-08 22:27:32
回答 2查看 2.6K关注 0票数 11

这是否保证线程安全/不会产生意想不到的结果?

代码语言:javascript
复制
Interlocked.Increment(ref _arr[i]);

我的直觉告诉我这不是,也就是说,读取_arri中的值并不能保证与实际的增量是“原子的”。

如果我认为这是错误的,我如何解决这个问题?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-08 22:29:11

假设i_arr没有任何变化,这应该没问题。

数组被视为变量的集合;无论该元素或同一数组中的其他元素发生了什么情况,互锁增量都应该工作得很好。

票数 16
EN

Stack Overflow用户

发布于 2013-05-27 13:45:10

如果某个东西是异步更改的_arri,那么我同意您的观点,不,查找_arr[i]本身不一定是原子的。

然而,正如Jon所说,一旦你确定了(一些) _arr的一个元素,它将自动递增,独立于在数组的其他元素中发生的其他操作,或者对_arri的进一步更改。

如果_arri是异步更改的,则对它们的所有引用(包括读和写)都需要在一个公共对象的lock中。(然后,您可以将Interlocked.Increment简化为一个简单的++

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

https://stackoverflow.com/questions/12783781

复制
相关文章

相似问题

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