博客
关于我
LINUX延时函数使用
阅读量:316 次
发布时间:2019-03-04

本文共 1084 字,大约阅读时间需要 3 分钟。

LINUX 几种常用的延时方式会被信号以及中断打断,如果不对打断进行处理会导致延时时间不精确。

select

void ms_sleep(long lTime){    struct timeval sTime;    sTime.tv_sec    = lTime/1000;    sTime.tv_usec   = (lTime%1000)*1000;    while (select(0, NULL, NULL, NULL, &sTime)<0)     {        if(EINTR != errno)       {          perror("my_mSleep nanosleep");          break;       }    }}

关于select被打断返回剩余时间网上没有太多的介绍,在man里面有这样一句话

(ii) select() may update the timeout argument to indicate how much time was left. pselect() does not change this argument.

nanosleep

void ms_sleep(long lTime){    struct timespec sTime;    sTime.tv_sec = lTime / 1000;    sTime.tv_nsec = (lTime % 1000) * 1000000;    while (nanosleep(&sTime, &sTime)<0)    {         if(EINTR != errno)         {            perror("my_mSleep nanosleep");            break;         }    }}void us_sleep(long lTime){    struct timespec sTime;    sTime.tv_sec = lTime / 1000;    sTime.tv_nsec = (lTime % 1000000) * 1000;    while (nanosleep(&sTime, &sTime)<0)    {         if(EINTR != errno)         {            perror("my_mSleep nanosleep");            break;         }    }}

转载地址:http://itqq.baihongyu.com/

你可能感兴趣的文章
OpenAI Gym简介及初级实例
查看>>
int 转 CString
查看>>
Edit编辑框自动换行与长度
查看>>
Java面向对象
查看>>
JAVA带标签的break和continue
查看>>
Java获取线程基本信息的方法
查看>>
(Python学习笔记):字典
查看>>
(C++11/14/17学习笔记):线程启动、结束,创建线程多法、join,detach
查看>>
C++并发与多线程(一)
查看>>
java一些基本程序
查看>>
vue-依赖-点击复制
查看>>
LeetCode 116填充每个节点的下一个右侧结点指针
查看>>
2021-4-28【PTA】【L2-1 包装机 (25 分)】
查看>>
Arduino mega2560+MPU6050利用加速度值控制舵机
查看>>
紫书——蛇形填数
查看>>
A Guide to Node.js Logging
查看>>
webwxbatchgetcontact一个神奇的接口
查看>>
【考研英语-基础-简单句】简单句的核心变化_谓语情态
查看>>
实现一个简易Vue(三)Compiler
查看>>
仿小米商城(上)
查看>>