作者:张裕鹏 日期:2021-6-26

    目前在 Linux 下常见的休眠函数有:

    1. #include <unistd.h>
    2. unsigned int sleep(unsigned int seconds); // 秒
    3. int usleep(useconds_t usec); // 微秒

    细心的朋友可能会发现,好像缺少了毫秒的实现函数。其实没关系,我们可以自己来实现一个毫秒

    1. void msleep(unsigned long ms_second)
    2. {
    3. unsigned long s_time = 0;
    4. unsigned long m_time = 0;
    5. s_time = ms_second / 1000;
    6. m_time = ms_second % 1000;
    7. if(s_time){
    8. sleep(s_time);
    9. }
    10. if(m_time){
    11. usleep(m_time * 1000);
    12. }
    13. }

    有一个细节需要注意一下,就是 sleep 函数是可以被中断的,也就是说如果在睡眠的过程中(睡眠还未结束),一旦发生中断,则会执行下一条语句,不再睡眠。具体内容可以参考文章:linux中sleep函数的使用和总结

    另外,在 Linux 系统下可以通过命令:man 3 sleep 查看对应的 sleep 函数手册。usleep 也是同理!

    希望本文对你有帮助。