QReadWriteLock を再帰モードで使用しています。
このコードはそれ自体では意味がありませんが、ここから発生した問題は次のとおりです。
lock->lockForWrite();
lock->lockForRead();
lockForRead がブロックされています。これは再帰モードであることに注意してください。
私が見る方法は、書き込みが「優れた」ロックであるということです。これにより、保護されたデータの読み取りと書き込みが可能になります。読み取りロックでは読み取りのみが許可されます。
また、唯一のリーダーが書き込みロックを要求しているのと同じ場合、書き込みロックはブロックされるべきではないと思います。
qreadwritelock.cpp ソースコードから、私が望むように動作させる試みがないことがわかります。したがって、これはバグではなく、欠けている機能です。
私の質問はこれです、この種の再帰は許可されるべきですか? この種の実装から生じる問題はありますか? また、それは何でしょうか?