荷里活老耄 2016-04-12 15:03 采纳率: 0%
浏览 1620

请教select定时偏差,linux平台

代码如下:

 #include <sys/time.h>
#include <time.h>
#include <errno.h>
#include <sys/select.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>


int main()
{

    while(1)
    {
        struct timeval stStart, stEnd;
        gettimeofday(&stStart, NULL);

        struct timeval tv={0, 33000};
        select(0,NULL,NULL,NULL,&tv);

        gettimeofday(&stEnd, NULL);
        unsigned int iDelayUseTime = ((stEnd.tv_sec-stStart.tv_sec)*1000*1000+(stEnd.tv_usec-stStart.tv_usec));

        printf("use time:%u\n", iDelayUseTime);
        if(iDelayUseTime < 30000 || 35000 < iDelayUseTime)
            exit(0);
    }


    return 0;
}

运行结果:
图片说明

使用usleep的话也会出现这种情况

  • 写回答

2条回答

  • devmiao 2016-04-12 15:50
    关注
    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?