Should i define one QMutex for all of my critical sections? or i should define one QMutex for each critical sections?
is there any identical concept in Qt like lock(object) {...}
in c Sharp?
Should i define one QMutex for all of my critical sections? or i should define one QMutex for each critical sections?
is there any identical concept in Qt like lock(object) {...}
in c Sharp?
如果您将为QMutex
所有关键部分定义一个,QMutex::lock()
则将锁定对使用此 QMutex 对象的所有关键部分的访问。如果您将使用许多QMutex
对象,那么每个对象都会锁定相应的代码段。
假设你有:
QMutex mutex;
void method1()
{
mutex.lock();
//section1
mutex.unlock();
}
void method2()
{
mutex.lock();
//section2
mutex.unlock();
}
线程调用method1() 还是method2() section1 和section2 是否被锁定。在后一种情况下:
QMutex mutex1;
QMutex mutex2;
void method1()
{
mutex1.lock();
//section1
mutex1.unlock();
}
void method2()
{
mutex2.lock();
//section2
mutex2.unlock();
}
section1 和 section2 分别被两个不同的互斥锁锁定。所以调用 method1() 不会锁定对 section2 的访问。
QMutexLocker
另请注意,在大多数情况下,它比QMutex
单独使用更容易、更安全。