参考博客 https://blog.csdn.net/liang19890820/article/details/52186626:
写的不错!,我还不知道qt5已经封装出了这样的接口,一般我还是自己封装出方法,通过标志位实现关闭!
void QThread::requestInterruption()
{
Q_D(QThread);
QMutexLocker locker(&d->mutex);
if (!d->running || d->finished || d->isInFinish)
return;
if (this == QCoreApplicationPrivate::theMainThread) {
qWarning("QThread::requestInterruption has no effect on the main thread");
return;
}
d->interruptionRequested = true;
}
bool QThread::isInterruptionRequested() const
{
Q_D(const QThread);
QMutexLocker locker(&d->mutex);
if (!d->running || d->finished || d->isInFinish) // 如果线程已经结束就。。。
return false;
return d->interruptionRequested;
}
实现方案还是一样的,
耗时操作里面这样判断
while (!isInterruptionRequested())
析构函数里面这样操作
ThreadToDisks:: ~ThreadToDisks()
{
requestInterruption();
quit();
wait();
}