• 6818阅读
  • 4回复

关于QTimer运行机制的问题? [复制链接]

上一主题 下一主题
离线ny13524
 
只看楼主 倒序阅读 楼主  发表于: 2008-08-26
— 本帖被 XChinux 执行加亮操作(2008-08-28) —
程序中要用到QTimer定时向串口发送数据并读取,在这里我定时1s,可有时超过1s才能读到数据,可程序依然能进行读取,就是反应变慢了许多.不知道为什么?
是不是timer->start(1000)一次就开启一个线程,然后如果这个线程在1s内没反映,则开启另一个线程,而此时运行两个线程,直到timer->stop后,还要等待所有开启的线程结束呀?
望高手指点下timer的运行原理
离线guobinnew

只看该作者 1楼 发表于: 2008-08-27
QTimer不是创建线程,而是使用线程的event派发器中注册定时信息,然后由event派发器产生定时器事件,所以使用QTimer的线程必须有事件Loop,特别是非GUI线程
离线sbtree
只看该作者 2楼 发表于: 2008-08-27
看看你的timeout事件,对应的槽,有可能是某个读取串口的函数堵塞在那里了
windows 7 + VC++2008 + Qt4.5.2
离线xjcook

只看该作者 3楼 发表于: 2008-08-27
引用第2楼sbtree于2008-08-27 18:11发表的  :
看看你的timeout事件,对应的槽,有可能是某个读取串口的函数堵塞在那里了


正解,读取串口会阻塞。最好放线程里,qtimer是不开线程的
离线ny13524
只看该作者 4楼 发表于: 2008-08-29
呵呵,谢谢各位的回复,对timer的应用又学到了很多
快速回复
限100 字节
 
上一个 下一个