• 6296阅读
  • 5回复

QThread的一个奇怪问题 [复制链接]

上一主题 下一主题
离线xuyantao
 
只看楼主 倒序阅读 楼主  发表于: 2008-12-19
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
使用定时器每隔一秒调用槽a()

class A
{
    ……
    QThread *b;
    ……
};
void A::a()
{
    if(!b->running()) {
        b->start();
        cout<<"A new thread!";
    }
}


结果,每隔一秒if语句组都会执行一次,产生一大堆A new thread!A new thread!A new thread!

找不到原因,不知道各位的理解呢?谢谢!



离线lazybone
只看该作者 1楼 发表于: 2008-12-19
若真每1秒执行一次,应该不会产生一大堆。
可能是定时器没弄好,看看 setInterval() ,和start ()里的参数对不
离线xuyantao
只看该作者 2楼 发表于: 2008-12-19
引用第1楼lazybone于2008-12-19 14:53发表的  :
若真每1秒执行一次,应该不会产生一大堆。
可能是定时器没弄好,看看 setInterval() ,和start ()里的参数对不


一大堆是指运行一段时间之后的结果
按照QThread的文档应该只产生一句:A new thread!
产生很多肯定是因为每次调用槽都会产生新的thread, if(!b->running()) 根本没有起到自己的作用!
离线xuyantao
只看该作者 3楼 发表于: 2008-12-19
PS:我用的QT3
离线water_wf

只看该作者 4楼 发表于: 2008-12-19
有可能啊你的线程一下就退出了
离线xuyantao
只看该作者 5楼 发表于: 2008-12-19
引用第4楼water_wf于2008-12-19 18:13发表的  :
有可能啊你的线程一下就退出了


嗯 有可能 但是我的程序中并没有结束线程的语句 所以很诡异 用gdb调试 到线程类的构造函数那块就卡住不动了 所以也没法调 哎 水平太低
快速回复
限100 字节
 
上一个 下一个