ReaderWriterLockSlim -不确定这是如何工作的
本文关键字:工作 何工作 不确定 ReaderWriterLockSlim | 更新日期: 2023-09-27 18:14:47
我在名为CicApplication的单例类型对象上声明了以下内容:
internal static List<Fcda> FcdaCache
{
get
{
// If the current thread already has a write lock, no need to attempt to acquire a read lock (which would fail anyway)
if (CoaterDataLock.IsWriteLockHeld)
return _fcdaCache;
CoaterDataLock.EnterReadLock();
try
{
return _fcdaCache;
}
finally
{
CoaterDataLock.ExitReadLock();
}
}
}
'CoaterDataLock'被声明为ReaderWriterLockSlim对象
在代码的其他地方,我对'FcdaCache'执行以下查询:
CicApplication.FcdaCache.Where(row => row.Coater == coater)
我的问题是这样的。当我执行这个查询时,会尝试在FcdaCache上获得读锁吗?我想会的,但我不确定。
我认为你的代码没有锁定任何东西。你进入锁,返回_fcdaCache
,离开锁。在之后,您在该缓存上创建.Where(...)
,然后将解锁,因此可能发生并发异常或数据竞争