gpt4 book ai didi

c++ - 如何使用递归 QMutex

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:00:47 33 4
gpt4 key购买 nike

我正在尝试使用递归 QMutex,我阅读了 QMutex 类引用,但我不明白如何去做,有人可以给我一个例子吗?我需要一些方法来锁定可以在调用锁定方法之后或之前解锁的 QMutex。如果递归互斥不是这种方式,还有其他方式吗?

最佳答案

要创建递归 QMutex,您只需在构建时传递 QMutex::Recursive,例如:

QMutex mutex(QMutex::Recursive);
int number = 6;

void method1()
{
mutex.lock();
number *= 5;
mutex.unlock();
}

void method2()
{
mutex.lock();
number *= 3;
mutex.unlock();
}

递归 意味着您可以从同一个线程多次锁定互斥体,而不必解锁它。如果我很好地理解你的问题,那就是你想要的。

请注意,如果递归锁定,则必须调用解锁次数相同。锁定/解锁互斥锁的更好方法是使用 QMutexLocker

#include <QMutexLocker>

QMutex mutex(QMutex::Recursive);
int number = 6;

void method1()
{
QMutexLocker locker(&mutex); // Here mutex is locked
number *= 5;
// Here locker goes out of scope.
// When locker is destroyed automatically unlocks mutex
}

void method2()
{
QMutexLocker locker(&mutex);
number *= 3;
}

关于c++ - 如何使用递归 QMutex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13637830/

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