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上获得读锁吗?我想会的,但我不确定。

ReaderWriterLockSlim -不确定这是如何工作的

我认为你的代码没有锁定任何东西。你进入锁,返回_fcdaCache,离开锁。之后,您在该缓存上创建.Where(...),然后将解锁,因此可能发生并发异常或数据竞争