Qt的两个线程执行速度受影响!
大家好,我有两个线程,一个主线程,用来显示界面,另一个是收发串口的数据。
在主线程上有个QTextEdit控件,用来把收发到的串口数据实时的显示到QTextEdit界面上。
现在的情况是:
当我把收发线程打开的时候,主线程上QTextEdit上的数据就显示的特别慢。
当收发线程关闭的时候, QTextEdit上的数据就显示的特别的快。
请问下是怎么回事,谢谢!
我的平台是S3C6410, 为了测试,我收发线程使用这样的
while(1)
{
sleep(1);
} 我这样做就等于把收发线程处于睡眠状态,可是这样还是会导致主线程很慢,请教下为什么,谢谢!
[解决办法]
刚刚碰到过这个问题已经解决了。。。
在发送外面加个循环就会提速。。。串口数据进来的速度还是很快的,主要是在显示上面一个一个输出的话自然快不了。。。
另外如果用的是第三方库的话也可以调用readAll,一次能全读出来,然后一次全部输出,这样更快,不过数据量的话要查查数据是否准确。。。
[解决办法]
qextserialport不是串口通讯的第三方类库吗?里面是有readyRead信号的呀,不管是串口还是网口还是别的什么,它总会是一个QIODevice,检测是否有数据过来是他们的基本共性。
另外,你为啥一定要“1ms或100us发一次”??不要忘记,你发送的目的地是UI!这已经超出了人类的反应速度,这么频繁的发送除了浪费CPU时间外,没有别的用处。你就不会攒赞再发吗?