C# ReaderWriteLock 中可升级读锁与写锁的区别

2024-01-11

ReaderWriterLock类中的可升级读锁和写锁有什么区别?

根据MSDN的描述,只有一个线程可以进入可升级读锁。如果我遵循正确,我可能会忘记升级它,因为它与写锁相同。 我缺少什么吗?


(我假设你的意思是ReaderWriterLockSlim,正如我不认为ReaderWriterLock具有可升级的读取模式。)

虽然只有一个线程可以进入可升级读锁,但一个线程可以拥有可升级读锁而其他线程仍然可以进入读锁:

在任何给定时间只有一个线程可以进入可升级模式。如果线程处于可升级模式,并且没有线程等待进入写入模式,则任意数量的其他线程都可以进入读取模式,即使有线程等待进入可升级模式也是如此。

与写锁进行比较:

当有线程等待进入写入模式时,尝试进入读取模式或可升级模式的其他线程会阻塞,直到所有等待进入写入模式的线程超时或进入写入模式然后退出。

换句话说,写锁是完全排他的,而可升级的读锁将允许其他线程继续进入/退出读模式直到需要升级为止.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# ReaderWriteLock 中可升级读锁与写锁的区别 的相关文章

随机推荐