我在递归模式下使用 QReadWriteLock。
这段代码本身没有意义,但我从这里出现的问题:
lock->lockForWrite();
lock->lockForRead();
lockForRead 被阻止。请注意,这是在递归模式下。
我看到它的方式是 Write 是一个“高级”锁,它允许我读取和写入受保护的数据,而 Read lock 只允许读取。
另外,我认为如果唯一的读者是同一个请求写锁的读者,则不应阻止写锁。
我可以从 qreadwritelock.cpp 源代码中看到,没有尝试让它像我想要的那样工作。所以这不是错误,而是我发现缺少的功能。
我的问题是,应该允许这种递归吗?这种实施是否会出现任何问题?它们会是什么?