?
? ????? PHP ??? ???? ??? ?? ??
在頭文件<threads.h>中定義 | ||
---|---|---|
int thrd_sleep(const struct timespec * time_point,struct timespec * remaining); | (自C11以來) |
至少在達(dá)到time_point指向的基于TIME_UTC的時間點之前,阻止當(dāng)前線程的執(zhí)行。
如果收到未被忽略的信號,睡眠可能會恢復(fù)。 在這種情況下,如果剩余時間不為NULL,則剩余持續(xù)時間將存儲到剩余指向的對象中。
time_point | - | 指向 sleep until 的時間點 |
---|---|---|
remaining | - | 指向該對象的剩余時間中斷??赡転镹ULL,在這種情況下,它將被忽略 |
成功睡眠時返回0,發(fā)生信號時返回-1,發(fā)生錯誤時返回負(fù)值。
time_point
與remaining
可以在相同的對象,該對象的信號之后簡化重新運行功能點。
實際的睡眠時間可能比請求的要長,因為它會向上舍入到定時器粒度以及調(diào)度和上下文切換開銷。
這個函數(shù)的POSIX相當(dāng)于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標(biāo)準(zhǔn)(ISO / IEC 9899:2011):
7.26.5.7 thrd_sleep函數(shù)(p:385)
thrd_yield(C11) | 產(chǎn)生當(dāng)前時間片(功能) |
---|