linux下的精确wait
源代码:
#include <stdio.h>
#include <time.h>
inline double
now()
{
timeval tv;
gettimeofday(&tv, 0);
double s = (tv.tv_sec);
s += (1e-6 * tv.tv_usec);
return s;
}
inline void
wait(double sec)
{
double start_time = now();
const double SLEEP_MIN_TIME = 0.005;
//当等待时间>SLEEP_MIN_TIME时,调用nanosleep() API,避免过多占用内存。
//nanosleep() API的精度约为200us。
if(sec > SLEEP_MIN_TIME)
{
double sleep_time = sec-SLEEP_MIN_TIME;
struct timespec sleep_;
int seconds = static_cast<int>(sleep_time);
sleep_.tv_sec = seconds;
sleep_.tv_nsec = static_cast<int>((sleep_time-seconds)*1e9);
nanosleep(&sleep_,NULL);
}
//开始循环取时,判断时间是否到了。
for(;;)
{
if((now() - start_time) > sec) break;
}
}
测试,在2.6内核,迅驰1.6G环境下,精确度大概能到0.00001 s,即10us。
linux下的精确wait相关推荐
- linux下find命令的使用和总结
背景:find命令十分的好用,特别是在查找文件的时候,这个时候需要和文件通配符一起使用. 1 前言 我们为什么要学会使用find命令? 每一种操作系统都有成千上万的文件组成,对于linux这样&quo ...
- Linux下进程通信知识点学习笔记(一)
4种主要事件导致进程创建: 系统的初始化: 执行了正在运行的进程所调用的进程创建系统调用: 用户请求创建一个进程: 一个批处理作业的初始化: 进程的终止: 正常退出: 出错退: 严重错误: 被其他进程 ...
- linux 中如何将文件粘贴到usr下的lib内,学会在Linux下GCC生成和使用静态库和动态库...
一.基本概念1.1什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不同(主 ...
- linux命令grep如何使用,Linux下如何使用grep搜索文本
Linux下如何使用grep搜索文本 2018-11-30 一.什么是grep grep是一种文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. grep是几个单词的缩写,g(globa ...
- Linux下防火墙iptables用法规则详及其防火墙配置
原博主文章更美丽: http://www.cnblogs.com/yi-meng/p/3213925.html iptables规则 规则--顾名思义就是规矩和原则,和现实生活中的事情是一样的,国有国 ...
- Linux下命令行(二)之文本处理基础
系统管理员工作过程中,总会遇到小的.琐碎的.各种各样的文本处理问题,如果对文本处理不熟,每一次都要查很多的资料去解决这样的小问题,那么系统管理员的工作效率从何而来.因此如何快速写出简短有效的针对特定问 ...
- linux下find(文件查找)命令的用法总结
前言:我们为什么要学会使用find命令? 每一种操作系统都有成千上万的文件组成,对于linux这样"一切皆文件"的操作系统来说更不例外,大家应该都能很轻松使用windows下的文件 ...
- Linux下不同服务器间数据传输
因为工作原因,需要经常在不同的服务器见进行文件传输,特别是大文件的传输,因此对linux下不同服务器间数据传输命令和工具进行了研究和总结.主要是rcp,scp,rsync,ftp,sftp,lftp, ...
- 通过/proc/sys/net/ipv4/优化Linux下网络性能
通过/proc/sys/net/ipv4/优化Linux下网络性能 /proc/sys/net/ipv4/优化 1) /proc/sys/net/ipv4/ip_forward 该文件表示是 ...
最新文章
- d06调试详细说明_D06电脑板调试软件使用说明_20100706
- Flying框架思路与感想
- java换行符分隔字符串_Java 实例 – 字符串分隔(StringTokenizer) | 菜鸟教程
- 电脑遇到脱机状态怎么解除?
- ob_start()函数
- 全局唯一序号生成方案
- 第2章 神经网络的数学基础
- 股票历史数据下载-A股所有股票的历史数据下载
- EK算法(网络流,最大流)
- 网站速度优化4个实用办法
- 计算机应用与基础app,手机APP支持下《计算机应用基础》课程探究性学习活动设计与实验研究...
- 福建农林大学计算机课程表,福建农林大学课程表.doc
- Restricted RPS
- python微信抢票脚本_春节到了 教你使用python来抢票回家
- redit mysql_样式
- vim配置http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html
- IOS逆向笔记之HOOK实现(非越狱)
- 给div加滚动条 div显示滚动条设置代码
- UT-Exynos4412 三星ARM四核旗舰开发平台android4.0体验-17板载按键调试
- 【环境部署系列 06】Ascend 310(推理)X86服务器 Ubuntu系统环境部署