【问题标题】:How is ReadLock any good in ReaderWriterLockSlim?ReadLock 在 ReaderWriterLockSlim 中有什么好处?
【发布时间】:2019-10-25 19:28:03
【问题描述】:

我正在学习更多关于 C# 中的线程。我只是不明白为什么我要关心“进入”或“退出”一个 ReadLock,而它实际上并没有做任何锁定?

【问题讨论】:

  • 我对这个问题感到困惑。进入读锁要么获取锁,要么阻塞,直到可以获取;你能说说为什么你认为进入读锁既不取锁也不阻塞?
  • 如果不进一步了解你的困惑的根源,你将很难摆脱你所拥有的任何错误信念。
  • 我以为永远不会有任何“阻塞”。但艾米的回答已经说明了这一点。
  • 如果读锁不可用——因为写锁被占用了——然后读者阻塞直到读锁可用。如果读锁被占用,那么这会阻止写入者获得写锁。

标签: c# multithreading c#-4.0


【解决方案1】:

它不做任何锁定?它获得了一个读锁

如果当前有写锁会发生什么?你不能读,你需要等待。想读的人都需要等到写锁释放。

但是许多对象可以有并发读取锁,因为读取不会改变对象并且不会导致竞争条件。

更多信息请参见https://en.wikipedia.org/wiki/Readers%E2%80%93writer_lock

【讨论】:

  • 这适用于两个方向:当您拥有读锁时,其他想要写锁的人必须等待。
猜你喜欢
  • 2011-05-12
  • 1970-01-01
  • 2011-01-04
  • 1970-01-01
  • 2010-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多