相关疑难解决方法(0)

ReaderWriterLockSlim.EnterUpgradeableReadLock()始终是死锁?

我非常熟悉,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)

c# multithreading thread-safety readerwriterlockslim

6
推荐指数
1
解决办法
5798
查看次数