©
This document uses PHP Chinese website manual Release
在头文件<threads.h>中定义 | ||
---|---|---|
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_point
与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); // sleep 1 sec printf("Time: %s", ctime(&(time_t){time(NULL)}));}
输出:
Time: Mon Feb 2 16:18:41 2015Time: Mon Feb 2 16:18:42 2015
C11标准(ISO / IEC 9899:2011):
7.26.5.7 thrd_sleep函数(p:385)
thrd_yield(C11) | 产生当前时间片(功能) |
---|