Здравствуйте, мне нужно использовать writereaderlock в моем методе. Я хочу знать, как это правильно использовать.Как правильно использовать readerwriterlock
Я получил словарь 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 [справ] всегда возвращает экземпляр моего Objecta (для Exemple)
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();
}
Я действительно не уверен, что я с помощью читателя и писателя там, как же мне нужно использовать для чтения замок писатель, с условной проверки?
Возможно, вы точно не уменьшаете TTL. Вы атомизировали декремент переменной стека, а не член класса. –