我应该为我的所有临界区定义一个QMutex吗?或者我应该为每个临界区定义一个QMutex?
Qt中有没有像c夏普中的lock(object) {...}这样的相同概念?
发布于 2012-12-30 19:03:56
如果您将为所有临界区定义一个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();
}https://stackoverflow.com/questions/14090040
复制相似问题