qthread完成状态

QThread finished state

本文关键字:状态 qthread      更新时间:2023-10-16
QThread * thread = new QThread();
qDebug() << "Finished: " << thread->isFinished();

控制台是:

Finished: 0

线程是从不启动,isFinished()不应该返回 true (1(而不是 false> false (0(?

nb: isRunning返回 0 是正确的。

no。完成的状态可以表明在调用quit()exit()之前。它是接收finished()信号的替代方法。

quit()exit()导致run()(这是线程实际运行的唯一部分在单独的线程中运行的部分(,返回您的QThread实例所属的线程。之后执行清理过程 - 不再处理指定删除旁边的事件。

触发完成状态,您可以安全地删除QThread的实例。finished()信号发出(在大多数情况下,连接到位于单独线程中的对象的deleteLater()插槽(,isFinished()返回true

自然,如果您尚未启动线程,它就无法完成,因为它从未运行。:d开玩笑,删除根本没有启动的QThread实例是完全安全的。

如果您对此更感兴趣,我建议您查看QThread的源代码,以查看类是如何固定并实现的。

来自文档:

bool qthread :: isfined((const

如果线程完成,则返回true;否则返回false。

另请参见Isrunning((。

bool qthread :: isrunning((const

如果线程运行,则返回true;否则返回false。

另请参见Isfined((。

要完成线程,必须事先启动。