深入探究 Linux 中的睡眠与定时器机制
1. 睡眠机制
在 Linux 编程中,睡眠是一个常见的操作,用于控制程序的执行节奏。这里介绍几种不同的睡眠方式。
1.1 相对睡眠与绝对睡眠
相对睡眠是指让程序在当前时间的基础上睡眠指定的时长。例如,下面的代码实现了相对睡眠 1.5 秒:
struct timespec ts = { .tv_sec = 1, .tv_nsec = 500000000 };
int ret;
ret = clock_nanosleep (CLOCK_MONOTONIC, 0, &ts, NULL);
if (ret)
perror ("clock_nanosleep");
而绝对睡眠则是让程序睡眠到一个指定的绝对时间点。示例代码如下:
struct timespec ts;
int ret;
/* we want to sleep until one second from NOW */
ret = clock_gettime (CLOCK_MONOTONIC, &ts);
if (ret) {
perror ("clock_gettime");
return;
}
ts.tv_sec += 1;
printf ("We want to sleep until sec=%ld nsec=%ld\n",
ts.tv_sec, ts.tv_nsec);
ret
超级会员免费看
订阅专栏 解锁全文
2

被折叠的 条评论
为什么被折叠?



