我需要在Qt(4.7.3,Windows XP)中实现关键部分。
例如,公共广告位:
void MyClass::myPublicSlot(...local params...)
{
...
block of code working with global params;
...
}
函数void myPublicSlot
以计时器开始
执行该功能可能需要很长时间,有时甚至超过计时器滴答(或者,例如,按钮点击)
需要锁定block of code working with global params
。
函数调用可以是多线程和单线程。
P.S。我尝试使用QMutex和QMutexLocker,但它在单线程情况下导致死锁。
答案 0 :(得分:4)
QMutex
就是你想要的。也许你是递归地使用它而不是创建一个递归的互斥体?这是单线程代码中死锁的唯一解释。