• 2728阅读
  • 3回复

[提问]关于QT线程问题(理解性质的) [复制链接]

上一主题 下一主题
离线tangbao203
 

只看楼主 倒序阅读 楼主  发表于: 2012-04-20
开启一个 线程 用 XXX.start(), 当run()里头的代码执行完毕后, 线程是不是出于休眠状态 ?
当处于上述情况下,是不是要wakeOne()一下才可以在调用start()来激活线程.?

还有:
     假设 在这个空间里头 正在运行线程A,线程B,线程C,线程D;
              1.     A,B, 还在执行run()里头的代码(在整个进程下永不结束).   与此同时,C,D 执行完了run()里头的代码.处于休眠状态.
              2.    执行唤醒wakeAll(), C,D(由于执行完了run() ) ,所以仍旧出于休眠状态.  
   这样理解是不是正确的?
离线fish0619

只看该作者 1楼 发表于: 2012-04-20
执行完再重新new一个来执行。似乎不能重用已经结束的线程。

建议看Qt的示例程序。wakeOne()与wakeAll()用于同步,不是你想的那样。同步原语可以看一下操作系统有关多任务的部分。常用来实现消费者/生产者模式。
离线dbzhang800

只看该作者 2楼 发表于: 2012-04-21
恩,一旦 run() 结束,你的线程就结束了。

run()和线程的关系,可以类比 main() 和 进程的关系。
离线tangbao203

只看该作者 3楼 发表于: 2012-04-21
谢谢两位,长见识啦!
快速回复
限100 字节
 
上一个 下一个