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

请教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
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配