Namespaces
Variants

thrd_sleep

From cppreference.net
定义于头文件 <threads.h>
int thrd_sleep ( const struct timespec * duration,
struct timespec * remaining ) ;
(C11 起)

阻塞当前线程的执行 至少 到由 duration 指向的基于 TIME_UTC 的时间间隔结束。

如果接收到未被忽略的信号,睡眠可能会提前恢复。在这种情况下,如果 remaining 不是 NULL ,则剩余时间将存储到 remaining 所指向的对象中。

目录

参数

duration - 指向休眠时长的指针
remaining - 指向用于存储被中断时剩余时间的对象。可为 NULL ,此时该参数将被忽略

返回值

0 表示成功休眠, - 1 表示发生信号,其他负值表示发生错误。

注释

duration remaining 可能指向同一对象,这简化了在信号后重新运行函数的过程。

实际休眠时间可能比请求的时间更长,因为系统会将其向上舍入至计时器精度,并受到调度和上下文切换开销的影响。

该函数的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

参考文献

  • C17 标准 (ISO/IEC 9899:2018):
  • 7.26.5.7 thrd_sleep 函数 (p: 281)
  • C11 标准 (ISO/IEC 9899:2011):
  • 7.26.5.7 thrd_sleep 函数 (页: 385)

参见

让出当前时间片
(函数)
C++ 文档 关于 sleep_for