thrd_sleep

来自cppreference.com
< c‎ | thread
定义于头文件 <threads.h>
int thrd_sleep( const struct timespec* time_point,
                struct timespec* remaining );
(C11 起)

阻塞当前线程的执行,至少直至抵达 time_point 所指向的基于 TIME_UTC 的时间点。

若收到不忽略的信号( signal ),则可以较早地从休眠恢复,。此情况下,若 remainingNULL ,则存储剩余时长到 remaining 所指向的对象中。

目录

[编辑] 参数

time_point - 指向要休眠到的时间点的指针
remaining - 指向要放置中断剩余时间的对象的指针。可以是 NULL ,此情况下忽略它

[编辑] 返回值

成功休眠时为 0,若出现信号则为 -1 ,若出现错误则为其他负值。

[编辑] 注意

time_pointremaining 可以指向相同对象,这会简化函数在信号后的重新运行。

实际休眠时间可能长于请求,因为它会被向上舍入到计时器的粒度,而且还因为调度和环境切换开销。

此函数的 POSIX 等价版本是 nanosleep

[编辑] 示例

#include <threads.h>
#include <time.h>
#include <stdio.h>
 
int main(void)
{
    printf("Time: %s", ctime(&(time_t){time(NULL)}));
    thrd_sleep(&(struct timespec){.tv_sec=1}, NULL); // 睡眠 1 秒
    printf("Time: %s", ctime(&(time_t){time(NULL)}));
}

输出:

Time: Mon Feb  2 16:18:41 2015
Time: Mon Feb  2 16:18:42 2015

[编辑] 引用

  • C11 standard (ISO/IEC 9899:2011):
  • 7.26.5.7 The thrd_sleep function (p: 385)

[编辑] 参阅

让出当前时间片段
(函数) [编辑]
sleep_untilC++ 文档