25得票1回答
避免递归的最佳C# ReaderWriterLockSlim实践

我有一个使用ReaderWriterLockSlim的类,其中包含一个读方法和一个写方法,写方法使用读方法来检索要修改的元素。快速示例:class FooLocker { ReaderWriterLockSlim locker = new ReaderWriterLockSlim();...

22得票5回答
更快的TMultiReadExclusiveWriteSynchronizer?

有没有更快的TMultiReadExclusiveWriteSynchronizer类型呢?比如FastCode? 从Windows Vista开始,微软添加了Slim Reader/Writer lock。它比Delphi的TMultiReadExclusiveWriteSynchroni...

16得票1回答
是否有一个偏向读取者的ReaderWriterLockSlim等效物?

我已经使用了一段时间的ReaderWriterLockSlim,目前它满足了我的需求。随着我不断微调应用程序,我发现ReaderWriterLockSlim 在我的使用场景下略显不足。 根据文档(和我的经验),它更偏向于作者而非读者(即当读者和作者排队等待时,作者会得到优先处理)。然而,我需...

14得票2回答
微软关于ReaderWriterLockSlim.IsReadLockHeld/IsWriteLockHeld的声明及其后果

为了同步对我的属性的访问,我使用ReaderWriterLockSlim类。我使用以下代码以线程安全的方式访问我的属性。public class SomeClass { public readonly ReaderWriterLockSlim SyncObj = new ReaderW...

13得票3回答
锁定bool值的访问是必需的还是过度设计?

我有一个类,这个类被设计为一个POCO类,各种线程和任务可以读取其值,而其他人只偶尔更新这些值。这似乎是ReaderWriterLockSlim的理想应用场景。 问题在于,如果需要保证线程安全的属性是bool类型,是否过度使用?如果是int或DateTime类型会发生什么?public cl...

10得票2回答
如何避免在Writer尝试进入写锁时阻塞ReaderWriterLockSlim的读取者

我正在使用ReaderWriterLockSlim来保护一些操作。我想让读者优先于写者,这样当一个读者长时间持有锁时,一个写者试图获取写锁时,后续的读者不会被写者的尝试阻塞(如果写者在lock.EnterWriteLock()上被阻塞,那么相反的情况就会发生)。 为此,我认为写者可以在循环中...

9得票1回答
ReaderWriterLockSlim是否有与lock{}语句相当的等效语句?

我喜欢C#中lock(myLock){ /* do stuff */}的快捷方式。是否有读写锁的等效方法?(特别是ReaderWriterLockSlim)目前,我使用以下自定义方法,我认为它有效,但有点烦人,因为我必须将我的操作作为匿名函数传递,如果可能的话,我更愿意使用标准的锁定机制。 ...

9得票3回答
ReaderWriterLockSlim.EnterUpgradeableReadLock()总是导致死锁吗?

我非常熟悉ReaderWriterLockSlim,但最近在一个类中尝试实现EnterUpgradeableReadLock()时...很快我意识到当2个或更多线程运行代码时,这几乎肯定会造成死锁: Thread A --> enter upgradeable read lock Th...

8得票2回答
使用ReaderWriterLockSlim出现错误

我收到了这个异常: 读锁被释放了,但并没有被持有。 在 System.Threading.ReaderWriterLockSlim.ExitReadLock() 处 在 .. GetBreed(String) 处 下面是唯一一个访问锁的代码段。可以看到,没有递归调用。...

8得票2回答
使用ReaderWriterLockSlim.EnterXXX()模式并配合try-finally语句块是否完全安全?

MSDN文档以及许多使用ReaderWriterLockSlim类的示例都建议使用以下模式: cacheLock.EnterWriteLock(); try { //Do something } finally { cacheLock.ExitWriteLock(); } ...