thrd_sleep

来自cppreference.com
< c‎ | thread
定义于头文件 <threads.h>
int thrd_sleep( const struct timespec* time_point,
                struct timespec* remaining );
(C11 起)

阻塞当前线程的执行,至少直至抵达time_point所指向的基于TIME_UTC的时间点。

休眠可以较早地恢复,若收到为未被忽略的信号(signal)。这种情况下,若remainingNULL,则剩余时长会被存储入remaining所指向的对象。

目录

[编辑] 参数

time_point - 指向要休眠到的时间点的指针
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 standard (ISO/IEC 9899:2011):
  • 7.26.5.7 The thrd_sleep function (p: 385)

[编辑] 参阅

生成当前时间切片
(函数) [编辑]