Defined in header <threads.h> | ||
---|---|---|
int thrd_sleep( const struct timespec* time_point, struct timespec* remaining ); | (since C11) |
Blocks the execution of the current thread for at least until the TIME_UTC
based time point pointed to by time_point
has been reached.
The sleep may resume earlier if a signal
that is not ignored is received. In such case, if remaining
is not NULL
, the remaining time duration is stored into the object pointed to by remaining
.
time_point | - | pointer to the time point to sleep until |
remaining | - | pointer to the object to put the remaining time on interruption. May be NULL , in which case it is ignored |
0
on successful sleep, -1
if a signal occurred, other negative value if an error occurred.
time_point
and remaining
may point at the same object, which simplifies re-running the function after a signal.
The actual sleep time may be longer than requested because it is rounded up to the timer granularity and because of scheduling and context switching overhead.
The POSIX equivalent of this function is 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)})); }
Output:
Time: Mon Feb 2 16:18:41 2015 Time: Mon Feb 2 16:18:42 2015
(C11) | yields the current time slice (function) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/c/thread/thrd_sleep