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_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 2015
Time: Mon Feb 2 16:18:42 2015
参考
- C11标准(ISO / IEC 9899:2011):
扩展内容
thrd_yield(C11) | 产生当前时间片(功能) |
---|
| sleep_until 的 C ++文档|