您好,我需要在我的方法中使用 writerreaderlock。我想知道如何正确使用它。
我有一本 ObjectA 的字典
public class ObjectA
{
public ReaderWriterLock RWL {get;set;}
public ObjectB obj {get;set;}
public ObjectA()
{
RWL = new ReaderWriterLock();
}
}
public class ObjectB
{
int TTL {get;set;}
string Value {get;set;}
}
在我的方法中,我使用 ObjectA 的字典,键是 Guid,所以假设当我调用 dict[guid] 它总是返回我的 ObjectA 的实例(例如)
public foo()
{
ObjecA objA = dict[guid];
objA.RWL.AcquireReaderLock(500);
if(objA.obj.TTL<=0)
{
objA.obj.RWL.AcquireWriterLock(1000);
objA.obj.Value = DateTime.Now().ToString();
objA.obj.RWL.ReleaseWriterLock();
}else{
int ttl = objA.obj.TTL;
Interlocked.Decrement(ref ttl);
}
objA.RWL.ReleaseReaderLock();
}
我真的不确定我在那里使用读写器,我需要如何使用读写器锁,有条件验证?