news 2026/4/3 5:10:15

线程任务中不增加内部延时的处理方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
线程任务中不增加内部延时的处理方法

问题

选中代码,如果发送失败加延时会导致最外围的while(1)时序变化,外围的while是每100ms循环一次的,有什么好的解决办法

AI回答

你的担忧很合理:在 for 循环里加 osDelay(100) 进行重试,如果 send 失败,实际会导致整个 while(1) 的周期变长(比如本来 100ms,失败重试后可能变成 200ms+),影响主循环的时序和实时性。

解决思路如下:

异步重试/任务分离
不要在主循环里阻塞等待重试。可以把“待重试的数据包”放到一个专门的重试队列或标志里,主循环每次轮询时都检查并优先处理重试队列。这样主循环不会被单次 send 失败拖慢。

定时器/延迟标志
记录需要重试的数据包和下次重试的时间戳,每次 while(1) 时判断是否到达重试时间,到达则重试,否则跳过。这样不会阻塞主循环。

单独线程/任务
如果系统支持,可以把发送和重试逻辑放到单独的线程或任务里,主循环只负责分发数据,发送线程负责重试和延时。

非阻塞重试(推荐)
只做一次 send,失败后记录重试标志和时间,下次 while(1) 到时再尝试重发,不用 osDelay 阻塞。这样主循环时序不会受影响。

相关代码

// 多包独立非阻塞重试机制 static uint32_t retry_tick[20] = {0}; if(msg.vehicle_debug_period == 0) { uint32_t now_tick = osKernelGetTickCount(); // 先处理所有到达重试时间的包 for(int i=0; i<20; i++) { if(vds_ptr->data_len[i] >
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/25 9:22:11

Protobuf定义文件编写:VibeThinker生成message结构

Protobuf定义文件编写&#xff1a;VibeThinker生成message结构 在当前AI模型向轻量化、专用化演进的背景下&#xff0c;如何高效地与高性能小模型进行交互&#xff0c;已成为系统设计中的关键课题。以微博开源的 VibeThinker-1.5B-APP 为例&#xff0c;这款仅15亿参数的模型&am…

作者头像 李华
网站建设 2026/4/1 5:26:17

Sketch MeaXure终极指南:如何快速生成精准设计标注

Sketch MeaXure终极指南&#xff1a;如何快速生成精准设计标注 【免费下载链接】sketch-meaxure 项目地址: https://gitcode.com/gh_mirrors/sk/sketch-meaxure 还在为设计稿标注而烦恼吗&#xff1f;Sketch MeaXure作为一款基于TypeScript重构的智能设计标注插件&…

作者头像 李华
网站建设 2026/3/27 3:49:34

城通网盘极速解析神器:让下载速度飞起来的秘密武器

城通网盘极速解析神器&#xff1a;让下载速度飞起来的秘密武器 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 还在为城通网盘的蜗牛下载速度抓狂吗&#xff1f;别担心&#xff0c;这款城通网盘直连解析…

作者头像 李华
网站建设 2026/4/1 12:45:48

AMD Ryzen SDT调试工具深度技术解析:解锁处理器性能的终极密码

AMD Ryzen SDT调试工具深度技术解析&#xff1a;解锁处理器性能的终极密码 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: ht…

作者头像 李华
网站建设 2026/4/1 18:55:56

Sunshine云游戏革命:打造个人专属跨平台游戏中心

Sunshine云游戏革命&#xff1a;打造个人专属跨平台游戏中心 【免费下载链接】Sunshine Sunshine: Sunshine是一个自托管的游戏流媒体服务器&#xff0c;支持通过Moonlight在各种设备上进行低延迟的游戏串流。 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine …

作者头像 李华
网站建设 2026/3/14 10:47:53

Lumafly模组管理器:3大优势如何重塑空洞骑士游戏体验?

Lumafly模组管理器&#xff1a;3大优势如何重塑空洞骑士游戏体验&#xff1f; 【免费下载链接】Lumafly A cross platform mod manager for Hollow Knight written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/lu/Lumafly 当你在圣巢世界探险时&#xff0c…

作者头像 李华