我在一个工作线程中,想休眠一段指定的时间(通常是几百毫秒),但是休眠应该是可中断的。这是我想出的
void DummyScope::sleepForSamples() {
if(m_sampleSleep < 100) {
MySleeper::sleep(m_sampleSleep);
return;
}
// sleep in periods of 100 ms, to be responsible for shutdown requests
qint64 t = QDateTime::currentMSecsSinceEpoch();
qint64 end = t + m_sampleSleep;
while(t + 100 <= end) {
MySleeper::sleep(100);
t = QDateTime::currentMSecsSinceEpoch();
// TODO: check here whether we are interrupted
}
if(end > t) {
MySleeper::sleep(end - t);
}
}
然而,这看起来有点令人费解,我想知道是否有更好的方法来做到这一点。使用QWaitCondition
带有超时等待的 a 是更好的解决方案吗?