Interlocked 类
用于 变量的简单语句 原子化
i++
i++
不是线程安全的:以下操作流程可能会被线程调度器打断
- 从内存中取一个值
- 该值递增1
- 再将结果存储回内存
Interlocked.CompareExchange()
lock(this)
{
if(_someState = null)
{
_someState = new State;
}
}
以上代码可以用
Interlocked.CompareExchange()
方法替代
Interlocked.Increment()
public int State
{
get {
lock(this)
{
return ++_state;
}
}
}
以上代码可以用
Interlocked.Increment()
方法替代
public int State
{
get => Interlocked.Increment(ref _state);
}