use*_*753 0 c++ qt multithreading
正如标题所暗示的,你如何使用 QMutexLocker 重新锁定和解锁成员功能,我很难弄清楚这怎么做。
使用 QMutexLocker 的 RAII 风格是否总是从数据竞争中保证良好的锁定状态?
如果没有,那么当这种情况很可能发生时,我们需要调用unlock和relock函数吗?
我从这个 qt 源https://qt.gitorious.org/qt/qtbase/source/3b577dfe798bf5065a2bba4d7095709454aa709c:src/plugins/platforms/android/androidjnimenu.cpp 中看到 QMutexLocker 的用法
它确实使用了不同的 QxLocker.m 我的问题是我们什么时候需要许多所有权 qmutex 用于不同的 qmutexlocker 像上面的 qt 源?我们什么时候只需要单一所有权 qmutex 才能在不同的 qmutexlocker 中使用?
你能举个例子吗第二个问题..谢谢
解锁和重新锁定的典型用例是 get-modify-update:
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;
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5347 次 |
| 最近记录: |