我有一个有两种方法(一个实例)的类:
public class Example
{
public void Connect()
{
// do stuff
}
public void DoSomething()
{
if (someCondition)
Connect();
// do stuff
}
}
DoSomething允许多个线程同时访问。但是,如果Connect被调用,则不允许线程进入DoSomething,反之亦然,所以Connect和DoSomething是互斥的。
DoSomething比 更频繁地调用Connect。
我的第一个想法是使用ReaderWriterLockSlim,但是,当DomeSomething获取 reader lock 并需要调用Connect自身时,它无法获取 writer lock in Connect。
哪种同步模式最适合实现这一目标?