代码检查:可疑的“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日