C#:在int(充当bool)字段上与SpinLock进行Spinwait吗?

这两种方式有什么不同?

public class spinwaitLocking
{
    private int _isLock;

    public void TestMethod1()
    {
        var sw = new spinwait();
        while (Interlocked.CompareExchange(ref _isLock,1,0) == 0)
        {
            sw.SpinOnce();
        }

        DoSomethingQuick1();
        _isLock = 0;
    }

    public void TestMethod2()
    {
        var sw = new spinwait();
        while (Interlocked.CompareExchange(ref _isLock,0) == 0)
        {
            sw.SpinOnce();
        }

        DoSomethingQuick2();
        _isLock = 0;
    }
}


public class SpinLocking
{
    private SpinLock _spinLock = new SpinLock();
    private bool _isLock;

    public void TestMethod1()
    {
        _spinLock.Enter(ref _isLock);

        DoSomethingQuick1();

        _spinLock.Exit();
    }

    public void TestMethod2()
    {
        _spinLock.Enter(ref _isLock);

        DoSomethingQuick2();

        _spinLock.Exit();
    }
}
liang88474754 回答:C#:在int(充当bool)字段上与SpinLock进行Spinwait吗?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3113013.html

大家都在问