qt的线程函数体结束意味着线程结束吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt的线程函数体结束意味着线程结束吗相关的知识,希望对你有一定的参考价值。

参考技术A

不一定,要看线程函数体中的操作情况。如果线程函数体中存在循环操作,则不会结束,需要调用退出线程接口 QThread::exit() 来结束线程。

如何正确停止线程

有三种方式可以终止线程,具体调用函数依赖于使用的线程系统。1在线程入口函数中,调用return。即退出线程入口函数,可以实现终止当前线程效果;2在线程执行的任意函数,调用当前线程退出函数,可以退出当前线程;3在任意位置,调用线程终止函数,并传入要终止线程的标识符,即pid,可以实现终止对应线程效果。 参考技术A 线程是进程中的执行体。结束线程在程序内部执行完自然会结束。
如果是代码级的停止,一般都有相应的api函数退出线程。自己可以查一下说明文档。
参考技术B 从SUN的官方文档可以得知,调用Thread.stop()方法是不安全的,这是因为当调用Thread.stop()方法时,会发生下面两件事:

1. 即刻抛出ThreadDeath异常,在线程的run()方法内,任何一点都有可能抛出ThreadDeath Error,包括在catch或finally语句中。

2. 释放该线程所持有的所有的锁

当线程抛出ThreadDeath异常时,会导致该线程的run()方法突然返回来达到停止该线程的目的。ThreadDetath异常可以在该线程run()方法的任意一个执行点抛出。但是,线程的stop()方法一经调用线程的run()方法就会即刻返回

以上是关于qt的线程函数体结束意味着线程结束吗的主要内容,如果未能解决你的问题,请参考以下文章

线程学习笔记

java线程执行完后自己结束吗

qt中通过重写run方法创建线程与通过movetothread方法有啥区别

Qt中如何设置按钮点击终止线程

远程线程DLL注入, 如何释放DLL和结束DLL的线程

MFC中如何建立和结束一个线程