nanosleep纳秒级延迟

简介:
//函数原型 int nanosleep(struct timespec *req, struct timespec *rem)
//参数列表:
//  req:要求的睡眠时间
//  rem:剩余的睡眠时间
//返回值:
//  0:成功;-1,失败,errno保存错误代码

//目的:纳秒级别的延迟
int nano_delay(long delay)
{
    struct timespec req, rem;
    long nano_delay = delay;
    int ret = 0;
    while(nano_delay > 0)
    {
            rem.tv_sec = 0;
            rem.tv_nsec = 0;
            req.tv_sec = 0;
            req.tv_nsec = nano_delay;
            if(ret = (nanosleep(&req, &rem) == -1))
            {
                printf("nanosleep failed.\n");                
            }
            nano_delay = rem.tv_nsec;
    };
    return ret;
}

//测试,纳秒级延迟的误差率
int main()
{
    int ret = 0;
    long delay = 0;
    struct timespec start, end, interv;
    for(delay = 1000; delay < 1000*1000; delay+=1000)
    {   
        curr_time(&start);
        nano_delay(delay);
        curr_time(&end);
        diff(&start, &end, &interv);
        printf("delay = %ld, real delay = %ld, error = %g.\n", delay, interv.tv_sec * 1000000000 + interv.tv_nsec, (float)(interv.tv_sec * 1000000000 + interv.tv_nsec - delay)/delay );
    }

}

//测试结果:
//  Duo CPU e8200
//  Ubuntu 12.10 Kernel 3.4
//  

目录
相关文章
|
Java 数据库连接 Maven
springBoot:项目建立&配置修改&yaml的使用&resource 文件夹(二)
本文档介绍了如何创建一个基于Maven的项目,并配置阿里云仓库、数据库连接、端口号、自定义启动横幅及多环境配置等。同时,详细说明了如何使用YAML格式进行配置,以及如何处理静态资源和模板文件。文档还涵盖了Spring Boot项目的`application.properties`和`application.yaml`文件的配置方法,包括设置数据库驱动、URL、用户名、密码等关键信息,以及如何通过配置文件管理不同环境下的应用设置。
980 1
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
1879 2
|
SQL Java 数据库连接
mybatis如何实现分页查询?
【10月更文挑战第19天】mybatis如何实现分页查询?
1140 3
心理健康管理系统 【毕业设计系统】
这篇文章介绍了一个心理健康管理系统的毕业设计项目,展示了系统的功能分布、登录注册界面以及不同用户角色的后台管理界面,并提供了技术栈和效果截图。
心理健康管理系统 【毕业设计系统】
|
存储 Docker 容器
在Docker中,容器退出后,通过docker ps命令查看不到,数据会丢失么?
在Docker中,容器退出后,通过docker ps命令查看不到,数据会丢失么?
|
Java 开发工具 git
解决Error running XXXApplicationCommand line is too long.报错
解决Error running XXXApplicationCommand line is too long.报错
|
Java 关系型数据库 数据库
【SpringBoot系列】微服务集成Flyway
【4月更文挑战第7天】SpringBoot微服务集成Flyway
928 1
【SpringBoot系列】微服务集成Flyway
|
C语言
C语言中求x的n次方:从入门到实践(保姆式教学)
C语言中求x的n次方:从入门到实践(保姆式教学)
1350 0
|
存储 并行计算 程序员
pthread_create函数详解
pthread_create函数详解
|
编解码 Unix Linux
【Linux C/C++ 延时(延迟)函数比较】介绍Linux系统中常用的延时函数sleep、usleep、nanosleep、select和std::sleep_for()的区别和使用场景
【Linux C/C++ 延时(延迟)函数比较】介绍Linux系统中常用的延时函数sleep、usleep、nanosleep、select和std::sleep_for()的区别和使用场景
4574 1