【发布时间】:2013-12-03 11:23:27
【问题描述】:
我有一个后台功能,目前有如下内容:
void SomeClass::someFunction()
{
if (!_mutex.tryLock())
{
// i want to know the mutex is locked, and then exit the function
return;
}
else
{
_mutex.unlock();
}
QMutexLocker locker(_mutext);
// do some stuff that **could** throw an exception
}
我的困境与_mutex.unlock() 和QMutextLocker 声明有关。
如果_mutex 被锁定,那么我想知道它。如果不是,那么我想锁定它。问题是我想使用QMutexLocker 来锁定_mutex 的大部分功能。该函数可能会引发异常,因此手动解锁_mutex 可能很困难且容易出错。
上述解决方案有效,但我担心的是,在 _mutex.unlock() 和 QMutexLocker 减速之间的某个时间可能会出现其他东西并锁定互斥锁。
有没有人有更好的方法来做这件事的建议?
谢谢。
【问题讨论】:
-
你想在等待锁的时候做一些工作吗?
-
我更新了代码以更好地反映我想要做的事情。如果互斥锁被锁定,我想做一些事情然后退出函数。
-
这里有同样的问题。也想有一个支持tryLock的QMutexLocker。
标签: c++ qt concurrency mutex