我有一个QThread
听服务器。我想立即暂停QThread
的工作。根本没有等待,但几乎像是终止,它必须是立竿见影的。Qt,如何暂停QThread
1
A
回答
11
在任何给定线程中运行的代码不能在任何点停止,而不会破坏代码和/或C/C++运行时或任何其他使用的库中的共享数据结构的状态。
该代码只能停在明确定义的点上。
如果你的线程中运行一个事件循环(即通常,如果你不从QThread
得到或没有覆盖其run
),然后将QThread::quit()
一旦控制权返回给事件循环,它是安全的停止线程这样做。
如果你的线程运行重新实现有执行一个循环,它应该被要求中断时返回:
void MyThread::run() {
while (! isInterruptionRequested()) {
...
}
}
这样的线程是QThread::requestInterruption()
停止的。
仅供参考,这里是有时迷茫的QThread
各种方法:
wait()
块调用线程,直到被调用线程结束。当然,从线程本身调用它会立即造成死锁:如果一个线程等待一些永远不会发生的事情,线程就无法完成。quit()
尽早退出线程的事件循环,并导致返回QThread::run()
。如果你重新实现了run()
并且不旋转事件循环,它什么也不做。requestTermination()
设置一个标志,表示YourThread::run()
中的自定义循环可以通过isTerminationRequested()
进行检查。terminate()
停止线程现在。这通常会破坏您的应用程序的状态,因此您必须很快或不久就要面临后果。这种方法最好被遗忘。这实际上意味着“如果你有机会,很快就会崩溃这个过程并损坏一些磁盘数据”。
相关问题
- 1. 如何在QT中停止qThread
- 2. Qt - 如何杀死QThread
- 3. 如何取消暂停线程的Qt
- 4. 如何暂停和恢复Qtimer(Qt 5)
- 5. 如何在QPushButton按下时暂停执行QThread?
- 6. 如何从GUI停止QThread
- 7. Qt应用程序暂停
- 8. Qt播放/暂停动作?
- 9. C++/Qt - QThread vs QRunnable
- 10. 如何暂停DispatchTimer?
- 11. 如何暂停CADisplayLink?
- 12. IProgressMonitor如何暂停?
- 13. 如何暂停DynamicAnimator
- 14. Liquidsoap,如何暂停?
- 15. 如何从关闭中停止QThread?
- 16. QThread:如何停止无限循环
- 17. 从QThread类监视Qt GUI
- 18. 停止QThread执行
- 19. 如何暂停和重新启动QT Qtimer
- 20. 如何停止visual studio去program.cs(暂停所有)暂停按钮
- 21. 暂停循环并暂停
- 22. 如何暂停与执行
- 23. 如何暂停git分支?
- 24. 如何让屏幕暂停?
- 25. 如何暂停在IOS
- 26. 如何暂停此球?
- 27. 如何暂停Java Swing Timer?
- 28. 如何暂停网页?
- 29. 如何暂停PerformSelector执行?
- 30. 如何暂停故事板?
你能提供一些代码吗?现在还不清楚你的意思。如你所见,msleep方法立即暂停线程的工作。这是你想要的吗? –
_“它必须像刀一样切割”_O_o –
QThread的运行功能发出信号。我想终止由信号发出的东西alrealdy作品。 –