首页 > 代码库 > Linux 下的 sleep
Linux 下的 sleep
最近在阅读 libev 的源码,看到 libev 的代码里面的 sleep 实现, 我觉得可以把这个 sleep 实现单独拿出来,作为参考,以后可以直接拿来用。
代码如下(稍有修改):
void ev_sleep (double delay) { if (delay > 0.) { #if EV_USE_NANOSLEEP struct 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 _WIN32 Sleep ((unsigned long)(delay * 1e3)); #else struct 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.fengbohello.top/point/p/895
Linux 下的 sleep
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。