• 10292阅读
  • 4回复

关于QThread阻塞主线程 [复制链接]

上一主题 下一主题
离线fancery
 

只看楼主 倒序阅读 楼主  发表于: 2008-01-23
关于QThread阻塞主线程
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
我使用的是qt2,定义了一接收收据的线程类RecvThread继承QThread,run()中read()文件句柄canfd
main()函数如下
  {
      QApplication a( argc, argv );
     canfd = open("/dev/can",O_RDWR);//打开文件句柄
     Passwd f;//passwd为一个Qwidget
        RecvThread trecv;//打开接收线程
    trecv.run();

  QTimer    *sendtimer = new QTimer(&f);
    f.connect(sendtimer, SIGNAL(timeout()), &f, SLOT(SendStateMsg()));
    sendtimer->start(2000,false);   
   
    a.setMainWidget(&f);
 
    f.setCaption("Qt Example - Caption");
    f.resize(CaptionWidth,CaptionHeigth);
    f.setMaximumWidth(800);
    f.show();

如此,程序运行时只执行RecvThread线程,主函数中的QTimer定时器不再工作,为什么主线程会被阻塞,难道Qthread与pthread差距很大么,轻高手指点!
离线solonsolon

只看该作者 1楼 发表于: 2008-01-23
为什么要调用trecv.run()?怎么不用start()?
在线XChinux

只看该作者 2楼 发表于: 2008-07-17
对,用start
run()是protected的,应该是。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线lbz12721
只看该作者 3楼 发表于: 2012-01-17
恩恩!说的不错 辛苦了!
离线lbz12721
只看该作者 4楼 发表于: 2012-01-17
我和你背对背开始往前走,我们说好当我们走到第一百步的时候,再回头,武汉白癜风如果还能看到对方,我们就忘掉以前所有的不快乐,重新开始!如果看不到彼此,就一直走下去,永远不要回头!

当我走出第一步,有一种叫悲哀的东西漫过心底;我们的爱情路只剩下九十九步,我们怎么走到了今天这一步?曾几何时,我们一起在雨中漫步,衣服湿了也不觉得冷,曾几何时,我们在雪天里呼着热气吃冰淇凌,当人们投来惊异的目光中,武汉白癜风我们竟哈哈大笑.
我已走过二十步,你呢?我好想回头看看你,看看你是不是一样和我步履维艰!你还记得我吗?你教我学电脑的时候,跟我说过,编程时会遇上一种情况叫"死循环",进去了,就出不来,你说你对我的爱就是死循环,当时我很感动.
我走完五十步时,有个卖烤红薯的老头,问我要不要红薯.我摇了摇头,他就推着车子走了.为何他不再多和我讲几句话?那样我便可以停留一会儿,武汉白癜风不要再走下去.

八十步已然在我身后,你是否也在想我们前段不愉快的日子?我们为一点点小事天天争吵,不知为什么,我总是对着你哭,你便心乱如麻,烦躁不安.然后,我们都无端地说出一些互相伤害的话.武汉白癜风终于有一天你对我说:“我们不能再这样下去了,不然都会被折磨死,分开吧!”
九十九步了.我艰难地抬起沉重的脚,迟迟不愿放下,我怕放下脚时,回头再也看不见你;我怕放下脚时,武汉白癜风回头将永远失去你;我怕放下脚时,我从此再没有幸福可言;我怕……脚终于落下了,泪也顺颊而下,我不想回头,也不愿回头,我控制不住自己,蹲下身痛哭起来.突然,一双宽大的手抱住了我的双肩,我回过头,看到了你,看到了你充满了深深自责和浓浓爱意的双眼.

我扑进你的怀里,武汉白癜风哭着说:“我不要再往下走了.”
你把我紧紧抱住,轻轻抚摸我的长发.“永远不会再让你一个人走.其实,我一直走在你的身后,一直在等你回头.”
快速回复
限100 字节
 
上一个 下一个