Linux 下的 sleep

Posted fengbohello

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章

Linux下的sleep是睡眠还是忙等?占用CPU资源不?

linux下的sleep()和usleep()的使用和区别

C/C++linux C 中sleep “卡住”的问题

1 代码片段1

在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途

Selenium Xpath元素无法定位 NoSuchElementException: Message: no such element: Unable to locate element(代码片段