参考博客 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(); }