首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在C中创建睡眠时间时,clock_nanosleep比纳米睡眠更受欢迎?

为什么在C中创建睡眠时间时,clock_nanosleep比纳米睡眠更受欢迎?
EN

Stack Overflow用户
提问于 2011-10-17 22:05:42
回答 1查看 16.1K关注 0票数 13

这两个函数中哪一个更好

代码语言:javascript
复制
#include <time.h>
int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp);

代码语言:javascript
复制
#include <time.h>
int nanosleep(const struct timespec *rqtp, struct timespec *rmtp);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-17 22:18:51

nanosleep相比,clock_nanosleep的优势在于:

  1. 您可以指定睡眠的绝对时间,而不是睡眠的时间间隔。这对于实时(挂钟时间)时钟来说是不同的,它可以由管理员或ntpd等重置。使用nanosleep和预先计算睡眠间隔以达到给定的绝对时间,如果时钟被重置并且所需的时间“提前”到达,您将无法唤醒。此外,使用间隔时间进行调度有一个竞争条件:如果您计算了想要睡眠的间隔,但在调用nanosleep之前被抢占,并且一段时间内不再进行调度,那么您将再次睡眠过长。
  2. 您可以使用实时时钟以外的计时器进行睡眠。最有用的通常是单调时钟(不能重置,随着实际时间的推移单调递增),但也有其他有趣的应用程序,比如让多线程进程中的一个线程在进程的cpu时钟上休眠(因此它在进程使用了给定的cpu时间后唤醒)。
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7794955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档