我非常熟悉,ReaderWriterLockSlim
但我EnterUpgradeableReadLock()
最近在一个类中尝试实现...不久之后我意识到当2个或更多线程运行代码时,这几乎肯定是一个保证死锁:
Thread A --> enter upgradeable read lock
Thread B --> enter upgradeable read lock
Thread A --> tries to enter write lock, blocks for B to leave read
Thread B --> tries to enter write lock, blocks for A to leave read
Thread A --> waiting for B to exit read lock
Thread B --> waiting for A to exit read lock
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?
编辑
添加了我的场景的代码示例.该Run()
方法将由两个或多个线程同时调用.
public class Deadlocker
{
private readonly ReaderWriterLockSlim _lock …
Run Code Online (Sandbox Code Playgroud)