Qt线程类QThread 在windows下的线程创建和结束

d_d_v 2014-02-08 05:34:58
Qt线程类QThread 在windows下的线程创建和结束:我用写一个线程类继承与QThread ,重载run()函数里面有执行代码但是没有写循环。然后后每次运行都执行start(),来运行run()函数的代码。我有实例化好几个这个线程类对象。执行时都同时运行start()函数。
我现在有两个方面的疑惑:一:QThread 是什么时候创建线程和结束线的,是实例化线程QThread 类的时候还是什么时候? 二:我每次都会执行start()函数,那么在run()结束时,线程是挂起状态还是已经销毁?
三:用那种方式好些,在run()下面写过循环,还是线程执行时每次都执行一次start()函数。我的程序基本是这个几个线程并发的。
...全文
567 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
d_d_v 2014-02-10
  • 打赏
  • 举报
回复
引用 1 楼 jiangcaiyang123 的回复:
1、底层线程在start()开始启动,start()结束就销毁。 2、如果频繁调用start()很有可能出现运行错误。 3、我的方法,run()函数里面写个while( flag )循环,控制flag的真假和使用QThread::wait()来保证线程的结束。
那我试下用你的方法。我现在每个线程要执行就运行start()。run里面没有写循环,我还一直以为是实例化线程类时就创建了线程。
彩阳 2014-02-09
  • 打赏
  • 举报
回复
引用 2 楼 u011141200 的回复:
[quote=引用 1 楼 jiangcaiyang123 的回复:] 1、底层线程在start()开始启动,start()结束就销毁。 2、如果频繁调用start()很有可能出现运行错误。 3、我的方法,run()函数里面写个while( flag )循环,控制flag的真假和使用QThread::wait()来保证线程的结束。
借楼追问个问题,如果我想立即结束一个正在跑着的线程应该怎么做(主要是结束他,然后回收掉)? 求不怎么耗时的操作。[/quote] QThread::terminate(),不过是从外部结束的,可能会破坏堆栈。
Jagdschwester 2014-02-09
  • 打赏
  • 举报
回复
引用 1 楼 jiangcaiyang123 的回复:
1、底层线程在start()开始启动,start()结束就销毁。 2、如果频繁调用start()很有可能出现运行错误。 3、我的方法,run()函数里面写个while( flag )循环,控制flag的真假和使用QThread::wait()来保证线程的结束。
借楼追问个问题,如果我想立即结束一个正在跑着的线程应该怎么做(主要是结束他,然后回收掉)? 求不怎么耗时的操作。
彩阳 2014-02-08
  • 打赏
  • 举报
回复
1、底层线程在start()开始启动,start()结束就销毁。 2、如果频繁调用start()很有可能出现运行错误。 3、我的方法,run()函数里面写个while( flag )循环,控制flag的真假和使用QThread::wait()来保证线程的结束。

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧