• 8659阅读
  • 1回复

关于QThread的msleep()函数的效果和执行效率!!!急 [复制链接]

上一主题 下一主题
离线loveonfire
 

只看楼主 倒序阅读 楼主  发表于: 2010-07-12
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
我在使用QextSerialPort类进行串口通信编程,是在windows下进行的。然后我专门开了一个线程进行读写串口,出现的情况如下:

我向串口写入一个数据以后,进行10ms睡眠,即调用msleep(10);但是结果是睡眠时间并不如预想的一样。

测试代码如下:

    QTime x;
    x.start();

    forever {
        //com->write( &a );
        x.restart();
        msleep( 10 );
        qDebug()<<x.restart();
    }

结果如下:
0
15
16
0
16
15
0
16
16
0
15
16
0
15
16
16
0
15
16
0
16
15
0
16
15
0
16
16
0
15
16
16



(基本是规律出现)


把msleep(10);换成如下代码:


while( x.elapsed < 10 )
continue;


得到的结果是:15或者16,不会出现0;


把msleep(10);更换成msleep( 1 ); 的时候出现的结果是:返回7次0,然后出现一次15或者16.




[ 此帖被loveonfire在2010-07-13 09:49重新编辑 ]
离线csfeng13

只看该作者 1楼 发表于: 2010-07-14
正常,一般低于30ms就不准了……
Qt 好东东,大家一起努力……
快速回复
限100 字节
 
上一个 下一个