栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在C到毫秒之间是否有替代的睡眠功能?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在C到毫秒之间是否有替代的睡眠功能?

是-
定义了较早的POSIX标准

usleep()
,因此在Linux上可用:

   int usleep(useconds_t usec);

描述

usleep()函数将调用线程的执行挂起(至少)usec微秒。任何系统活动,处理呼叫所花费的时间或系统计时器的粒度都可能会稍微延长睡眠时间。

usleep()
需要 微秒 ,因此您必须将输入乘以1000才能hibernate。


usleep()
此后已弃用,随后从POSIX中删除;对于新代码,
nanosleep()
首选:

   #include <time.h>   int nanosleep(const struct timespec *req, struct timespec *rem);

描述

nanosleep()
暂停调用线程的执行,直到至少
*req
经过指定的时间,或者传递触发调用调用线程中的处理程序或终止进程的信号为止。

结构timespec用于以纳秒精度指定时间间隔。定义如下:

       struct timespec {time_t tv_sec;        long   tv_nsec;              };

msleep()
使用实施的示例函数
nanosleep()
,如果被信号中断则继续睡眠:

#include <time.h>#include <errno.h>int msleep(long msec){    struct timespec ts;    int res;    if (msec < 0)    {        errno = EINVAL;        return -1;    }    ts.tv_sec = msec / 1000;    ts.tv_nsec = (msec % 1000) * 1000000;    do {        res = nanosleep(&ts, &ts);    } while (res && errno == EINTR);    return res;}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412243.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号