假设我们有一些基本的计时器和一个定期调用的插槽。
SomeObject::SomeObject()
{
QTimer *timer = new QTimer;
connect(timer , SIGNAL(timeout()), this, SLOT(updateState()));
}
void SomeObject::updateState()
{
// some operations leading to update of updatedValue
}
我也有来自同一个对象的函数,它强制更新并返回一些值。
bool SomeObject::getLatestState()
{
updateState();
return updatedValue;
}
这个函数可以直接从不同的线程调用。这让人想到线程安全的问题。简单的互斥锁getLatestState
将无济于事,因为在极少数情况下getLatestState
会从另一个启动的线程调用updateState
。同时可能会发生定时器超时。你能帮我妥善处理这种情况吗?