查看完整版本: [-- QT如何在子线程中使用timer(急急急急急急急急!!!) --]

QTCN开发网 -> 其它技术开发讨论区 -> QT如何在子线程中使用timer(急急急急急急急急!!!) [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

dflangsky 2014-06-24 11:55

QT如何在子线程中使用timer(急急急急急急急急!!!)


问题描述:
        在UI主线程中,我开启几个timer,每个timer里面会做一些相应的数据采集,同时UI主线程中有一个绘制图形处理,由于绘制的点多,且均需要进行坐标转换计算,每次刷新绘制一次所需时间大约在100ms左右,而所有的timer均是50ms以下的timer,在绘制的过程中造成了timerEvent函数也不进入,引起采集数据周期大于所设置的周期。这种情况如何解决?
目前思路:
       考虑单独开启子线程只做数据采集,但在子线程中如何利用timer来定时采集呢?用sleep(1)ms的并利用计数器来处理的话,这样会很不准--

       求各位给点思路~~

cahwxy 2014-06-24 12:30
提供一个问题解决方案:

1、绘制界面要用双缓冲,不要直接绘制,这样GUI线程基本不会钝的感觉
2、采集数据需要放在一个工作线程去完成。
3、在开启一个工作线程去绘制图片(供GUI线程使用),可以把取数据线程和绘制图片线程做一个同步(生产者和消费者)

dflangsky 2014-06-24 16:17
cahwxy:提供一个问题解决方案:
1、绘制界面要用双缓冲,不要直接绘制,这样GUI线程基本不会钝的感觉
2、采集数据需要放在一个工作线程去完成。
3、在开启一个工作线程去绘制图片(供GUI线程使用),可以把取数据线程和绘制图片线程做一个同步(生产者和消费者) (2014-06-24 12:30) 

工作线程采集数据的周期怎么处理?我可能采集多种数据,且多种数据的周期都不相同?


查看完整版本: [-- QT如何在子线程中使用timer(急急急急急急急急!!!) --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled