thrd_sleep

thrd_sleep

在头文件中定义
int thrd_sleep(const struct timespec * time_point,struct timespec * remaining);(自C11以来)

至少在达到time_point指向的基于TIME_UTC的时间点之前,阻止当前线程的执行。

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

参数

time_point-指向 sleep until 的时间点
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 // sleep 1 sec 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标准(ISO / IEC 9899:2011):

扩展内容

thrd_yield(C11)产生当前时间片(功能)

| sleep_until 的 C ++文档|