• 6845阅读
  • 3回复

QThread 无法在linux下被terminate [复制链接]

上一主题 下一主题
离线escort
 
只看楼主 倒序阅读 楼主  发表于: 2009-12-11
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
小弟再弄一个项目,其中会用到多线程,我用QThread来实现。 很传统的方法,重写run()方法。 用 start()来开始新的线程,用terminate()来强行终止线程。
在windows下面,一切正常,但是到了linux下面,同样的代码,当 mythread->terminate()执行过后,线程继续进行计算。直接忽略了这条语句。
我检查过了 setTerminationEnabled(true),没有问题。用 quit(), exit(),都无法在linux下终止程序。

哪位达人知道原因的所在? 求助
我的运行环境, Qt 4.4.3, 在windowXP 64-bit下,一切正常
在Fedora 11下面,Qthread不能被杀死

离线knowkjava
只看该作者 1楼 发表于: 2009-12-12
你确认是同一线程?就是说你杀死了一个,另一个运行同样run方法的还在跑?
在JAVA里,是不建议使用terminate,quit,exit之类的方法来强行终止线程的,因为使用这些方法,并不能及时回收被线程占用的资源
离线duduqq

只看该作者 2楼 发表于: 2009-12-12
好像有文章说terminate()不能正常终止进程的
离线nmiirq

只看该作者 3楼 发表于: 2010-05-27
引用第2楼duduqq于2009-12-12 12:25发表的  :
好像有文章说terminate()不能正常终止进程的

如1楼所说,是不安全的。
快速回复
限100 字节
 
上一个 下一个