有没有人知道如何检查并查看QMutex是否被锁定,而不使用该功能:
bool QMutex::tryLock()
我不想使用tryLock()的原因是因为它做了两件事:
出于我的目的,我对执行第二步(锁定互斥锁)不感兴趣.
我只是想知道它是否被锁定.
Ern*_*ill 24
根据定义,尝试锁定互斥锁是判断它是否被锁定的唯一方法; 否则当这个虚函数返回时,你怎么知道互斥锁是否仍然被锁定?它可能在函数返回时被解锁; 或者更重要的是,如果不执行锁定它所需的所有缓存刷新和同步,您实际上无法确定它是否已被锁定.
好吧,我猜我没有真正的方法去做我没有实际使用tryLock()的问题.
这可以通过以下代码完成:
bool is_locked = true;
if( a_mutex.tryLock() )
{
a_mutex.unlock();
is_locked = false;
}
if( is_locked )
{
...
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它解锁了QMutex,"a_mutex",如果它能够锁定它.
当然,这不是一个完美的解决方案,因为当它达到第二个if语句时,互斥锁的状态可能会发生变化.
归档时间: |
|
查看次数: |
4797 次 |
最近记录: |