c语言延时10ms函数
时间: 2024-11-09 11:11:40 浏览: 35
在 C 语言中,由于它不是一门支持原生高精度定时的语言,通常我们会使用`sleep()`函数来自 Linux 系统或者通过库函数如`usleep()`来实现大约 10 毫秒级别的延时。以下是两个例子:
1. 使用 `sleep()` 函数(仅限于对秒级别计数):
```c
#include <unistd.h>
void delay_10ms(void) {
// 10 milliseconds is approximately 0.01 seconds
sleep(0.01);
}
```
注意:这个方法并不精确,因为 `sleep()` 的时间单位是秒,并非毫秒。
2. 使用 `usleep()` 函数(适用于微秒级精确控制):
```c
#include <time.h>
#include <unistd.h>
void delay_10ms(void) {
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts); // 获取当前时间
ts.tv_sec += 0; // 秒数部分保持不变
ts.tv_nsec += 10 * 1000 * 1000; // 添加10毫秒即10,000,000纳秒
if (ts.tv_nsec >= 1000000000) { // 超过1秒,则需要调整秒数并更新纳秒
ts.tv_sec++;
ts.tv_nsec -= 1000000000;
}
nanosleep(&ts, NULL); // 阻塞直到指定的时间过去
}
```
这两个函数都是基于系统提供的API,可能受到系统性能的影响,对于更精确的需求,可以考虑使用定时器中断或者其他硬件支持的方式。
阅读全文