📅  最后修改于: 2023-12-03 14:39:39.763000             🧑  作者: Mango
sleep
是 C 语言提供的一个函数,它能让当前进程挂起一定时间(以秒为单位),可用于实现程序的等待或节流控制。但是在实际应用中,有时候需要更精确的等待时间,比如毫秒级别的等待。本文将介绍 C 语言中如何实现毫秒级别的睡眠。
先来看一下 sleep
函数的基本用法:
#include <unistd.h>
unsigned int sleep(unsigned int seconds);
函数接收一个 unsigned int
类型的参数 seconds
,表示要挂起的时间,单位为秒。函数返回值为 0 或剩余未休眠的时间(秒),如果在挂起过程中被信号打断,则返回未被休眠的时间。
下面是一个简单的使用例子:
#include <stdio.h>
#include <unistd.h>
int main() {
printf("Start...\n");
sleep(5);
printf("End.\n");
return 0;
}
执行上面的代码,会在控制台输出 "Start...",延迟 5 秒后输出 "End."。
但是 sleep
函数只能实现秒级别的睡眠,如果要实现毫秒级别的等待,就需要使用 usleep
函数。usleep
函数的基本用法如下:
#include <unistd.h>
int usleep(useconds_t usec);
该函数接收一个 useconds_t
类型的参数 usec
,表示要挂起的时间,单位为微秒。函数返回值为 0 或 -1,如果在挂起过程中被信号打断,则返回 -1。
下面是一个使用 usleep
实现毫秒级别的等待的例子:
#include <stdio.h>
#include <unistd.h>
int main() {
printf("Start...\n");
usleep(3000); // 等待 3 毫秒
printf("End.\n");
return 0;
}
执行上面的代码,会在控制台输出 "Start...",延迟 3 毫秒后输出 "End."。
本文介绍了 C 语言中如何使用 sleep 函数和 usleep 函数实现等待和节流控制。需要注意的是,usleep
函数是非标准的函数,在一些操作系统中可能未提供或者提供了自己实现的版本。如果需要在不同系统中移植代码,建议使用标准函数组合实现毫秒级别的等待。