可以用Interlocked.Exchange替换锁

时间:2017-10-11 10:37:14

标签: c# .net

我的班级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);
    }
}

0 个答案:

没有答案