阅读量:5
要精确控制nanosleep
函数的延时时间,可以通过以下步骤:
计算所需的睡眠时间,以纳秒为单位。例如,如果要睡眠1毫秒(即1000纳秒),则睡眠时间为1000。
将睡眠时间分解为秒和纳秒部分,并存储在
timespec
结构体中。timespec
结构体包含两个成员变量tv_sec
和tv_nsec
,分别表示秒和纳秒。调用
nanosleep
函数,并传入计算得到的timespec
结构体作为参数。
下面是一个示例代码,演示如何精确控制nanosleep
函数的延时时间:
#include <stdio.h> #include <time.h> void delay(int milliseconds) { struct timespec ts; ts.tv_sec = milliseconds / 1000; ts.tv_nsec = (milliseconds % 1000) * 1000000; nanosleep(&ts, NULL); } int main() { printf("Start\n"); delay(1000); // 睡眠1秒 printf("End\n"); return 0; }
在上面的示例中,delay
函数接受一个整数参数,表示要睡眠的毫秒数。函数内部计算得到秒和纳秒部分,并传入nanosleep
函数中,以实现精确控制睡眠时间。