4

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

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

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

        // do stuff
    }
}

DoSomething允许多个线程同时访问。但是,如果Connect被调用,则不允许线程进入DoSomething,反之亦然,所以ConnectDoSomething是互斥的。 DoSomething比 更频繁地调用Connect

我的第一个想法是使用ReaderWriterLockSlim,但是,当DomeSomething获取 reader lock 并需要调用Connect自身时,它无法获取 writer lock in Connect

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

4

0 回答 0