我的班级Foo
存储string
。期望Bar
属性被多个线程访问/分配,并且读取必须访问最新值,因此我放置了lock
:
public class Foo
{
private readonly object _lock = new object();
private string _bar;
public string Bar
{
get
{
lock (_lock)
{
return _bar;
}
}
set
{
lock (_lock)
{
_bar = value;
}
}
}
}
我想知道使用Interlocked.Exchange
会获得相同的结果但可能会有更好的表现吗?
public class Foo
{
private string _bar;
public string Bar
{
get => _bar;
set => Interlocked.Exchange(ref _bar, value);
}
}