C#不同地处理具有相同锁的两种方法

时间:2019-04-25 18:44:29

标签: c# locking mutex readerwriterlockslim

我有一个带有两种方法的类(一个实例):

public class Example
{
    public void Connect()
    {
        // do stuff
    }

    public void DoSomething()
    {
        if (someCondition)
            Connect();

        // do stuff
    }
}

允许DoSomething被多个线程同时访问。 但是,如果调用Connect,则不允许线程进入DoSomething,反之亦然,因此ConnectDoSomething是互斥的。 与DoSomething相比,Connect的调用频率更高。

我的第一个想法是使用ReaderWriterLockSlim,但是,当DomeSomething获取读取器锁并需要调用Connect本身时,它无法获取Connect中的写入器锁

哪种同步模式最适合实现此目标?

0 个答案:

没有答案