在Linux中,可以使用nanosleep函數來實現精確的休眠。nanosleep函數可以讓線程休眠指定的納秒數,確保休眠時長精確。
下面是一個使用nanosleep函數實現精確休眠的示例代碼:
#include <stdio.h>
#include <time.h>
int main() {
struct timespec req, rem;
// 設置需要休眠的時間為1秒
req.tv_sec = 1;
req.tv_nsec = 0;
// 使用nanosleep函數進行休眠
if (nanosleep(&req, &rem) == -1) {
printf("nanosleep failed\n");
return 1;
}
printf("Slept for 1 second\n");
return 0;
}
在這個示例中,首先定義了一個timespec結構體req,用來指定需要休眠的時間。然后調用nanosleep函數,將req作為參數傳遞給它,使得程序休眠指定的時間。如果nanosleep函數返回-1,說明休眠失敗,程序將返回1;否則打印"Slept for 1 second"表示休眠成功。
需要注意的是,nanosleep函數的第一個參數是一個指向struct timespec結構體的指針,因此在調用時需要使用&符號來獲取結構體的地址。nanosleep函數的返回值為0表示成功,-1表示失敗。