news 2026/5/1 7:11:40

飞凌嵌入式ElfBoard-系统信息与资源之休眠

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
飞凌嵌入式ElfBoard-系统信息与资源之休眠

在编写应用程序时多多少少会遇到需要程序等待一会,再执行下面的程序,这时候就需要延时函数来实现这个功能,本节就来介绍延时函数的使用。

一、sleep

用于使程序暂停执行一段时间,通常是以秒为单位。

1.头文件

#include <unistd.h>

2.函数原型

unsigned int sleep(unsigned int seconds);

3.参数

seconds: 需要暂停的时间,以秒为单位。该参数是一个无符号整数,表示希望程序停止执行的时间长度。

4.返回值

成功:返回值为 0,表示暂停的时间已经结束。

被中断:如果在暂停期间接收到信号,sleep() 函数可能会被中断,返回未用的剩余秒数,即返回值可能小于 seconds。

二、usleep

用于使程序暂停执行一段时间,通常是以微秒为单位。

1.头文件

#include <unistd.h>

2.函数原型

int usleep(useconds_t microseconds);

3.参数

microseconds: 需要暂停的时间,以微秒(百万分之一秒)为单位。该参数类型为 useconds_t,通常是无符号整数。

4.返回值

成功: 返回 0,表示暂停成功。

失败: 返回 -1,并将 errno 设置为相应的错误代码。

三、nanosleep

用于要求精确控制时间间隔的场景。它的主要特点是可以让程序暂停指定的时间,并且可以设置精确到纳秒级的时间。

1.头文件

#include <time.h>

2.函数原型

int nanosleep(const struct timespec *req, struct timespec *rem);

3.参数

req: 指向一个 struct timespec 结构的指针,该结构指定了希望暂停的时间。

struct timespec 的定义如下:

struct timespec {

time_t tv_sec; // 秒数

long tv_nsec; // 纳秒数

};

4.返回值

成功:返回 0,表示暂停成功。

失败:返回 -1,并将 errno 设置为相应的错误代码(如 EINTR 表示中断)。

5.示例:(使用不同函数分别延时1秒)

#include <stdio.h>

#include <unistd.h>

#include <time.h>

#include <sys/time.h>

void print_current_time(const char *function_name, long delay) {

struct timeval start, end;

long elapsed;

// 获取开始时间

gettimeofday(&start, NULL);

// 打印函数名称和延迟时间

printf("当前测试的函数: %s\n", function_name);

printf("延迟时间: %ld 微秒\n", delay);

// 根据不同的函数调用相应的延迟函数

if (function_name == "sleep") {

sleep(delay / 1000000); // 转换微秒为秒

} else if (function_name == "usleep") {

usleep(delay); // 直接使用微秒

} else if (function_name == "nanosleep") {

struct timespec req;

req.tv_sec = delay / 1000000; // 秒部分

req.tv_nsec = (delay % 1000000) * 1000; // 纳秒部分

nanosleep(&req, NULL);

}

// 获取结束时间

gettimeofday(&end, NULL);

// 计算和打印耗时

elapsed = (end.tv_sec - start.tv_sec) * 1000000 + (end.tv_usec - start.tv_usec);

printf("开始时间: %ld.%06ld\n", start.tv_sec, start.tv_usec);

printf("结束时间: %ld.%06ld\n", end.tv_sec, end.tv_usec);

printf("实际延迟时间: %ld 微秒\n", elapsed);

printf("------------------------------------\n");

}

int main() {

// 延迟时间设为 1 秒(1000000 微秒)

long delay_time = 1000000;

print_current_time("sleep", delay_time);

print_current_time("usleep", delay_time);

print_current_time("nanosleep", delay_time);

return 0;

}

6.查看测试结果

当前测试的函数: sleep

延迟时间: 1000000 微秒

开始时间: 1730949732.570708

结束时间: 1730949733.571225

实际延迟时间: 1000517 微秒

------------------------------------

当前测试的函数: usleep

延迟时间: 1000000 微秒

开始时间: 1730949733.571247

结束时间: 1730949734.571379

实际延迟时间: 1000132 微秒

------------------------------------

当前测试的函数: nanosleep

延迟时间: 1000000 微秒

开始时间: 1730949734.571402

结束时间: 1730949735.571949

实际延迟时间: 1000547 微秒

可以看到实际运行时间和设置时间是有一些误差的,这是因为系统运行、系统调用等原因都会影响实际的休眠效果。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 1:14:55

基于YOLOv8的校园安全隐患识别系统研究与实现(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于YOLOv8的校园安全隐患识别系统研究与实现 本文提出并实现了一种基于YOLOv8目标检测算法的校园安全隐患识别系统&#xff0c;可对校园场景中6类典型安全隐患(人员摔倒、交通事故、物品破坏、斗殴行为、火灾、盗窃行为)进行自动识别与实时预警 研究过程中&#xff0c;首先构建…

作者头像 李华
网站建设 2026/4/26 8:27:37

SVG静止无功发生器Matlab仿真设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

SVG静止无功发生器Matlab仿真设计(设计源文件万字报告讲解)&#xff08;支持资料、图片参考_相关定制&#xff09;_文章底部可以扫码、算法描述:采用dq旋转坐标轴下的电压电流双闭环控制&#xff0c;同时对dq进行解耦控制。电压外环的作用是稳定直流侧电压750V&#xff0c;电流…

作者头像 李华
网站建设 2026/5/1 10:37:04

救命神器8个一键生成论文工具,继续教育学生轻松搞定论文!

救命神器8个一键生成论文工具&#xff0c;继续教育学生轻松搞定论文&#xff01; AI 工具如何让论文写作变得轻松高效&#xff1f; 在当今快节奏的学习环境中&#xff0c;继续教育学生常常面临论文写作的挑战。无论是选题、撰写还是降重&#xff0c;每一个环节都可能成为阻碍进…

作者头像 李华
网站建设 2026/4/30 9:01:41

为什么选择BERT-base-chinese?中文预训练优势详解

为什么选择BERT-base-chinese&#xff1f;中文预训练优势详解 1. 这不是普通填空&#xff0c;是真正懂中文的语义推理 你有没有试过让AI补全一句古诗&#xff1f;比如输入“床前明月光&#xff0c;疑是地[MASK]霜”&#xff0c;它能立刻告诉你答案是“上”&#xff0c;而且信…

作者头像 李华
网站建设 2026/4/30 9:01:19

输入图片旋转问题?EXIF信息处理部署方案

输入图片旋转问题&#xff1f;EXIF信息处理部署方案 1. 功能概述 本工具基于阿里达摩院 ModelScope 的 DCT-Net 模型&#xff0c;支持将真人照片转换为卡通风格。在实际使用中&#xff0c;用户上传的图片常因设备拍摄方向不同而出现自动旋转或显示异常的问题——这背后的核心…

作者头像 李华
网站建设 2026/5/1 10:38:35

Live Avatar语音识别预处理:音频降噪与标准化工具推荐

Live Avatar语音识别预处理&#xff1a;音频降噪与标准化工具推荐 1. Live Avatar模型简介与硬件限制现实 Live Avatar是由阿里联合高校开源的数字人模型&#xff0c;专注于高质量语音驱动的视频生成。它能将一段普通录音与人物图像结合&#xff0c;生成口型同步、表情自然的…

作者头像 李华