Interlocked.Increment一个整数数组

use*_*225 10 c# multithreading .net-4.0

这是保证线程安全/不会产生意外结果吗?

Interlocked.Increment(ref _arr[i]);
Run Code Online (Sandbox Code Playgroud)

我的直觉告诉我这不是,即读取_arr [i]中的值并不能保证在实际递增时是"原子的".

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

Jon*_*eet 14

假设没有任何变化,i或者_arr应该没问题.

数组被视为变量的集合; 互锁增量应该正常工作,无论该元素或同一数组中的其他元素发生了什么.