最近在阅读 libev 的源码,看到 libev 的代码里面的 sleep 实现, 我觉得可以把这个 sleep 实现单独拿出来,作为参考,以后可以直接拿来用。

代码如下(稍有修改):

void
ev_sleep (double delay)
{if (delay > 0.){
#if EV_USE_NANOSLEEPstruct timespec ts;//EV_TS_SET (ts, delay);ts.tv_sec = (long)t; ts.tv_nsec = (long)((t - ts.tv_sec) * 1e9);nanosleep (&ts, 0);
#elif defined _WIN32Sleep ((unsigned long)(delay * 1e3));
#elsestruct timeval tv;/* here we rely on sys/time.h + sys/types.h + unistd.h providing select *//* something not guaranteed by newer posix versions, but guaranteed *//* by older ones *///EV_TV_SET (tv, delay);tv.tv_sec = (long)t; tv.tv_usec = (long)((t - tv.tv_sec) * 1e6);select (0, 0, 0, 0, &tv);
#endif}
}

其中的 EV_TS_SET 和 EV_TV_SET 是两个宏定义,我直接把这两个宏展开了。

本文转自郝峰波博客园博客,原文链接:http://www.cnblogs.com/fengbohello/p/7143692.html,如需转载请自行联系原作者

Linux 下的 sleep相关推荐

  1. 过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件

    过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件 find ./ -type f -size +1G| xargs rm 在清理系统日志文件 ...

  2. Linux下创建硬链接,文件访问为空,提示:xxxx: 符号连接的层数过多

    Linux下创建软链接|硬链接,文件访问为空,提示:x x x: 符号连接的层数过多. 原因:创建符号链接的时候未使用绝对路径,无论是源文件路径还是目标路径,都需要使用绝对路径. 如: ln -s / ...

  3. Linux下环境变量配置方法梳理(.bash_profile和.bashrc的区别)

    博客园 首页 新随笔 联系 管理 订阅 <div class="blogStats"><!--done--> 随笔- 556  文章- 38  评论- 77 ...

  4. linux下yum错误:[Errno 14] problem making ssl connection Trying other mirror.

    所有的base 都要取消注释 mirrorlist 加上注释 另外所有的enable都要设为零 目录 今天是要yum命令安装EPEL仓库后 yum install epel-release 突然发现y ...

  5. linux下使用source /etc/profile保存配置后,新的环境变量只能在一个终端里面有效

    博客园 首页 新随笔 联系 管理 订阅 <div class="blogStats"><!--done--> 随笔- 6  文章- 2  评论- 2 < ...

  6. Linux下Flash-LED的处理

    Linux下Flash-LED的处理 一些LED设备提供两种模式-torch和flash.在LED子系统中,LED类(参见Linux下的LED处理)和LED Flash类,分别支持这些模式.torch ...

  7. YOLOv4:目标检测(windows和Linux下Darknet 版本)实施

    YOLOv4:目标检测(windows和Linux下Darknet 版本)实施 YOLOv4 - Neural Networks for Object Detection (Windows and L ...

  8. Linux下的C#连接Mysql数据库

    今天在尝试在 Linux 系统下使用C#连接数据库,发现网上这方面的信息很少,所以就写一篇博客记录一下. Linux下这里使用的是mono. 首先是缺少Mysql.Data.dll这个库的,所以需要安 ...

  9. mysql在linux下的安装

    mysql在linux下的安装 安装环境:系统是 centos6.5 1.下载 下载地址:http://dev.mysql.com/downloads/mysql/5.6.html#downloads ...

  10. linux下find命令的使用和总结

    背景:find命令十分的好用,特别是在查找文件的时候,这个时候需要和文件通配符一起使用. 1 前言 我们为什么要学会使用find命令? 每一种操作系统都有成千上万的文件组成,对于linux这样&quo ...

最新文章

  1. 真惨!连各大编程语言都摆起地摊了!
  2. 热评一箩筐——《黑客攻防技术宝典》
  3. ecside使用笔记(1)
  4. python详细安装教程linux-Linux系统如何安装Python?新手教程
  5. js中String的常用扩展
  6. php重构ifelse,php - 重构条件语句PHP - SO中文参考 - www.soinside.com
  7. cv2 画多边形不填充_你不知道的4种方法:python方法绘制扇形
  8. sql 分组统计_leetcode-sql面试题十七篇精讲合集
  9. 面向 Web 前端的原生语言总结手册
  10. 一 VC2008环境中ICE的配置
  11. NOI2018 Day1 归程(Kruskal重构树)
  12. 通过配置host文件实现本地域名任意设置
  13. Prototype使用Form操作表单
  14. Vultr VPS修改root密码的方法
  15. 西门子plc vb和c语言区别,西门子plc不同编程语言的区别
  16. PS线条神器插件Lazy Nezumi Pro(能画出sai般的线条)
  17. 利用Python使图片完美去除水印,我想试试马赛克的效果∧v∧
  18. 计算机云开头的词语,“云”字开头的成语大全
  19. JavaScript-ES6新特性详解
  20. iphone手机设置自定义铃声(mac环境下设置)

热门文章

  1. linux 软件安装方式
  2. 列表生成式的复习以及生成器的练习, 杨辉三角实例(非常巧妙)
  3. Ruby on Rails,创建开发用的MYSQL数据库
  4. SQL查询语句精华总结
  5. 【python】整理的 Python 库
  6. 数据倾斜是什么以及造成的原因?
  7. 策略模式思想及示例代码(Strategy)
  8. 耳挂式蓝牙耳机原理_挂耳式蓝牙耳机如何佩戴
  9. php异步发送邮件,php通过fsockopen异步发送邮件
  10. python毕业设计总结范文大全_毕业设计心得体会范文【优秀】