首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

thrd_sleep

在头文件<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_pointremaining可以在相同的对象,该对象的信号之后简化重新运行功能点。

实际的睡眠时间可能比请求的要长,因为它会向上舍入到定时器粒度以及调度和上下文切换开销。

这个函数的POSIX相当于nanosleep。

代码语言:javascript
复制
#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)}));
}

输出:

代码语言:javascript
复制
Time: Mon Feb  2 16:18:41 2015
Time: Mon Feb  2 16:18:42 2015

参考

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

扩展内容

thrd_yield(C11)

产生当前时间片(功能)

| sleep_until 的 C ++文档|

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com