是否可以中止QRunnable任务?
即使在文档中我也找不到任何方法。
非常感谢
答案 0 :(得分:2)
Qt共享一个类似于许多其他框架的线程对象模型(想到.NET语言和Java)。在这些类型的框架中,通常不鼓励尝试“中止”线程。其他线程实现(如POSIX)大致相同。肮脏杀死一个线程是不好的做法。
相反,在run()内部构造逻辑,以便您可以经常放置“检查点”以确定run()函数是否可以安全地终止。这些检查点应检查指示线程应该结束的标志(或其他一些标记)。
答案 1 :(得分:1)
不,你不能中止QRunnable任务。
在Qt中弄脏中止线程的唯一方法是QThread::terminate()
(不鼓励)。
QThreadPool
使用QThread
幕后操作来运行QRunnable任务,但它没有为开发人员提供调用QThread::terminate()
的方法。因此,QRunnable不能被中止。
我建议您重新设计应用程序 - 请参阅Multithreading Technologies in Qt以了解可以使用线程的所有方法,并选择与您的用例匹配的解决方案。