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

Mel*_*Mel 5 c# multithreading

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

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

Jon*_*eet 12

(我假设你的意思是ReaderWriterLockSlim,因为我认为没有ReaderWriterLock可升级的读取模式.)

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

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

将其与写锁比较:

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

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