gpt4 book ai didi

c - 为什么 clock_nanosleep 优于 nanosleep 以在 C 中创建 sleep 时间?

转载 作者:IT王子 更新时间:2023-10-29 00:03:18 27 4
gpt4 key购买 nike

这两个功能哪个更好

#include <time.h>
int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp);

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

最佳答案

clock_nanosleep 相对于 nanosleep 的优势是:

  1. 您可以指定休眠的绝对时间until,而不是休眠的时间间隔。这对实时(挂钟)时钟有影响,可以由管理员或 ntpd 等重置。使用 nanosleep 并预先计算 sleep 间隔以达到给定绝对时间,如果时钟被重置并且所需时间“提前”到达,您将无法醒来。此外,使用间隔时间进行调度存在竞争条件:如果您计算了要休眠的间隔,但在调用 nanosleep 之前被抢占并且有一段时间没有再次调度,您将又睡得太久了。
  2. 您可以在实时时钟以外的定时器上 sleep 。最有用的通常是单调时钟(它不能被重置,并且随着实际时间的推移而单调增加),但也有其他有趣的应用,比如让多线程进程中的一个线程在进程的 cpu 时钟上休眠(因此它会在进程使用给定的 CPU 时间后唤醒)。

关于c - 为什么 clock_nanosleep 优于 nanosleep 以在 C 中创建 sleep 时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7794955/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com