gpt4 book ai didi

c++ - 我们什么时候使用 QMutexLocker 重新锁定和解锁?

转载 作者:行者123 更新时间:2023-11-27 23:02:44 42 4
gpt4 key购买 nike

正如标题所暗示的,你如何使用 QMutexLocker 重新锁定和解锁成员功能,我很难弄清楚这怎么可能完成。

  1. 使用 RAII 风格的 QMutexLocker 是否总是保证数据竞争的良好锁定状态?

  2. 如果不是,当可能出现这种情况时,需要调用解锁和重锁功能?

  3. 我从这个 qt 源代码中看到了 QMutexLocker 的用法 https://qt.gitorious.org/qt/qtbase/source/3b577dfe798bf5065a2bba4d7095709454aa709c:src/plugins/platforms/android/androidjnimenu.cpp
    它确实实现了不同的 qmutex 变量以供在 QMutexLocker 中使用。我的问题是我们什么时候需要许多所有权 qmutex 用于不同的 qmutexlocker,如上面的 qt 源代码?什么时候我们只需要单一所有权 qmutex 用于不同的 qmutexlocker?

第二个问题你能举个例子吗..谢谢

最佳答案

解锁和重新锁定的典型用例是获取修改更新:

class Foo {
QMutex dataMutex;
QVector<int> data;
public:
/// Thread-safe
void modify() {
QMutexLocker lock(&dataMutex);
QVector<int> copy = data;
lock.unlock();

copy << 42;

lock.relock();
data = copy;
}
};

关于c++ - 我们什么时候使用 QMutexLocker 重新锁定和解锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26200278/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com