uidab:不光是影响了QTimer,界面也卡住了,好像主线程突然就不运行了,用SIGIO信号是因为我有一个驱动程序,1秒钟会接收到一个中断 ,驱动接收到中断后我就异步通知QT程序
[图片]
这是QT中接收异步通知的初始化,接收到中断后调用my_signal_fun,my_signal_fun中读驱动的数据确定中断号正确后把相当地址的数据加入到队列
然后就是写文件线程,先读队列,再写文件
昨天晚上把QT程序打开,不点开始,也就是说不写文件到硬盘,程序运行了一晚上都没死,怀疑是CPU持续占用过高导致?和一个中断(SIGIO信号) 我是怀疑这里影响了QTimer不知道你为什么还要这个信号,希望有更详细的信息。
uidab:个人也遇到过QTimer运行着的时候, 莫名其妙的再也不启动了,和你的输出类似。 幸运的是我们不卡界面。后来就作了一个守护代码,看看是否定时器槽函数是否被执行。如果长时间没有运行就重启整个程序。 不知道这样操作会不会影响你的写文件。 (2017-11-16 11:17)
9715866331:我也想过这种方法,我做的项目是数据记者录仪,数据的采集不能中断,所以要长时间稳定的运行才行,我在想是不是cached缓存太大了的原因,我试试每次写入后清除cached。谢谢你的解答[表情] (2017-11-16 14:14)
sng2008:一般都是主线程阻塞了。仔细检查主线程中运行的槽函数,是否有可能造成阻塞的情况。 (2017-11-16 22:30)