【发布时间】:2019-05-06 14:16:19
【问题描述】:
我正在尝试将ReaderWriterLock 用于两个Tasks 之间的共享资源。由于某种原因,它开始无限期地等待:
class State {
private const int TIMEOUT = 5000;
private ReaderWriterLock lck = new ReaderWriterLock();
private TimeSpan lastIssuedAt;
public TimeSpan LastIssuedAt {
get {
this.lck.AcquireReaderLock(TIMEOUT);
return this.lastIssuedAt;
}
set {
this.lck.AcquireWriterLock(TIMEOUT);
this.lastIssuedAt = value;
}
}
}
当一个任务尝试get 属性LastIssuedAt 它只是阻塞,我不明白为什么。
【问题讨论】:
-
你也必须释放锁。
-
我认为当方法退出时它会被释放。我还需要释放
Readerlock吗?还有get我在哪里释放它?在return之前? -
get是否需要一个额外的变量?get { lock.AcquireReader(); var value=... ; lock.ReleaseReader(); return val ; }
标签: .net-core task-parallel-library readerwriterlock