代码检查:可疑的 'volatile' 字段使用:复合操作不是原子的。 'Interlocked' 类可以代替使用。
此检查会报告对 volatile 字段执行复合赋值以及自增或自减操作。 将字段声明为 volatile 并不会使 +=、 ++、 -- 或 ??= 等操作具有原子性。 这些操作仍然会执行多个步骤,并且在多线程访问时可能产生竞争。
示例
class Counter
{
private volatile int myValue;
void Increment()
{
myValue++;
}
}
using System.Threading;
class Counter
{
private int myValue;
void Increment()
{
Interlocked.Increment(ref myValue);
}
}
2026年 5月 8日