我在遞歸模式下使用QReadWriteLock。QReadWriteLock遞歸
此代碼本身並沒有什麼意義,但我已經在這裏出現的問題:
lock->lockForWrite();
lock->lockForRead();
lockForRead被阻止。請注意,這是遞歸模式。
我看到它的方式是Write是一個「優越」鎖,它允許我讀和寫受保護的數據,其中Read lock只允許讀取。
此外,我認爲寫鎖不應該被阻止,如果唯一的讀者是同一個請求寫鎖。
我可以從qreadwritelock.cpp源代碼中看到,沒有嘗試使它像我想要的那樣工作。所以這不是一個錯誤,但我發現一個功能缺失。
我的問題是,這種遞歸應該允許嗎?這種實現是否會產生任何問題?它們會是什麼?
QT 4.8.0 VS 2005,WIN XP 32位 – 0xbaadf00d
我是新來的Qt,你能告訴你這是什麼'遞歸mode'是什麼意思? –
這意味着我可以從同一個線程多次鎖定相同的互斥鎖,鎖定鎖定和解鎖解鎖解鎖。在非遞歸模式下,第二個鎖將被阻塞。 – 0xbaadf00d