我有一个有两种方法(一个实例)的类:
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
。
哪种同步模式最适合实现这一目标?