gpt4 book ai didi

c - 什么是 C 中的 do_nanosleep()

转载 作者:太空宇宙 更新时间:2023-11-04 06:01:08 26 4
gpt4 key购买 nike

我遇到了一个名为 do_nanosleep() 的方法在 C 中,我不明白它是如何使用的?我知道一件事与暂停调用线程的执行有关,但该任务由 nanosleep() 处理。在 C 中。如果这是真的,那么需要什么 do_nanosleep()这里以及它与 nanosleep() 的不同之处?

作为引用,这就是它的作用。

    /* arguments are seconds and nanoseconds */
inline void
do_nanosleep(time_t tv_sec, long tv_nsec)
{
struct timespec req;
req.tv_sec = tv_sec;
req.tv_nsec = tv_nsec;

nanosleep(&req, NULL);
}

最佳答案

由于 do_nanosleep() 不是标准函数,您必须在源代码或系统手册中跟踪它,才能了解它的作用。它可能是一个可移植性包装器,它在可用时使用 nanosleep(),以及其他东西(usleep() 甚至 sleep())当它不是。它也可能做一些与 sleep 完全无关的事情——但它可能确实如其名字所暗示的那样。

Google 还没有(在它被问到后 5 分钟)将你的问题编入索引,并且它对 do_nanosleep() 一无所知。这表明代码应该在您的源代码中的某个地方,而不是在系统手册中。


通过问题中的函数定义,我们可以看到,他们可以使用两个参数调用 do_nanosleep(),而不是要求用户创建一个 struct timespec,第一个代表秒,第二个代表秒的小数部分(0..999,999,999,以纳秒为单位)。然后调用 nanosleep()。因此,在编写软件的人的心目中,do_nanosleep() 为底层 nanosleep() 函数提供了一个稍微更方便的接口(interface)。由于它是内联的,struct timespec 的声明必须仍在范围内,所以我不相信我同意作者的观点,但这并不是一个错误的决定。

关于c - 什么是 C 中的 do_nanosleep(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19331228/

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