ReaderWriterLock クラスのアップグレード可能な読み取りロックと書き込みロックの違いは何ですか?
MSDN の説明によると、アップグレード可能な読み取りロックに入ることができるスレッドは 1 つだけです。正しく従えば、書き込みロックと同じであるため、アップグレードすることを忘れることができます。不足しているものはありますか?
ReaderWriterLock クラスのアップグレード可能な読み取りロックと書き込みロックの違いは何ですか?
MSDN の説明によると、アップグレード可能な読み取りロックに入ることができるスレッドは 1 つだけです。正しく従えば、書き込みロックと同じであるため、アップグレードすることを忘れることができます。不足しているものはありますか?
(アップグレード可能な読み取りモードReaderWriterLockSlim
はないと思うので、あなたが意味していると思います。)ReaderWriterLock
アップグレード可能な読み取りロックに入ることができるスレッドは 1 つだけですが、1 つのスレッドがアップグレード可能な読み取りロックを持つことができ、他のスレッドは引き続き読み取りロックに入ることができます。
一度にアップグレード可能モードに入ることができるスレッドは 1 つだけです。スレッドがアップグレード可能モードにあり、書き込みモードに入るのを待っているスレッドがない場合、アップグレード可能モードに入るのを待っているスレッドがあったとしても、任意の数の他のスレッドが読み取りモードに入ることができます。
それを書き込みロックと比較してください。
書き込みモードに入るのを待っているスレッドがある場合、読み取りモードまたはアップグレード可能モードに入ろうとする追加のスレッドは、書き込みモードに入るのを待っているすべてのスレッドがタイムアウトするか、書き込みモードに入ってから終了するまでブロックされます。
つまり、書き込みロックは完全に排他的ですが、アップグレード可能な読み取りロックでは、アップグレードが必要になるまで、他のスレッドが読み取りモードに出入りし続けることができます。
UpgradableReadLock は、WriteLock に変換できる特別な ReadLock だと思います。MSDN が述べていることは、一度に 1 つのスレッドだけが WriteLock になることができるということです。ライターは 1 つしか存在できないため、これは論理的です。