news 2026/5/4 13:23:27

两个线程间的数据传递

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
两个线程间的数据传递

对tsp_control.c及tsp_vehicle_data.c文件,牵扯到一个知识点,如果tsp_vehicle_data.c线程中需要tsp_control.c线程变量,除了全局变量,有什么好的传递变量的方式

AI回答

可以避免直接用全局变量的做法:

1.消息队列:tsp_control 把需要的数据打包成消息投递,tsp_vehicle_data 取队列;适合一对一或一对多,天然线程安全。
2.循环缓冲区 + 互斥锁:共享一个 ring buffer,入队/出队时加锁;带上长度或序号可防止读到半包。
3.发布-订阅:tsp_vehicle_data 订阅事件,tsp_control 在数据更新时广播(可用轻量事件总线或多个队列)。
4.事件/信号量 + 共享结构:共享一个数据结构,用互斥锁保护写,更新后用信号量/条件变量唤醒对方读取。
5.原子变量/无锁快照:对于小体量标量数据(flags、状态位),可以用原子类型或禁用中断的小临界区,读方直接快照。
6.回调/函数指针:tsp_vehicle_data 提供回调,tsp_control 更新数据时调用回调,把数据传入参数;适合低频、即时通知。

选择建议:

若是状态/控制命令:用消息队列或事件+锁保护的共享结构。
若是流式数据:用环形缓冲区(锁或单生产者单消费者无锁)。
若只传布尔/枚举:用原子标志即可。
需要结合你们的 RTOS/平台(如有内置 queue、sem、event APIs)选对应实现。

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

基于用户画像的研究生多维成长评价管理系统-用户画像任务书

中原工学院软件学院毕业设计(论文)任务书姓 名专 业班 级题 目基于用户画像的研究生多维成长评价管理系统-用户画像设计任务按照软件工程规范描述 web 端需求,细化用例规约,合理设计数据库,实现 web 端以下功能:1、用户…

作者头像 李华
网站建设 2026/5/3 9:25:35

AI测试工具的七大死亡陷阱与破局之道

一、数据维度:构建模型的阿喀琉斯之踵 数据质量不足的连锁反应 案例:某金融APP采用AI测试工具验证交易流程,因训练数据未包含东南亚货币符号,导致印尼市场支付功能漏测 数据毒性三定律: | 毒性类型 | 发生率 | 典型后…

作者头像 李华
网站建设 2026/4/25 23:20:13

EasyGBS景区远程视频监控建设方案

一、方案背景在文旅行业数字化转型加速的背景下,景区安全管控、客流疏导、应急处置等需求日益严苛,传统视频监控方案存在兼容性差、算力不足、远程访问受限等痛点,难以适配景区广域覆盖、多设备接入、实时响应的核心诉求。国标GB28181算法算力…

作者头像 李华
网站建设 2026/4/23 16:27:53

Java 算法实战:高频业务场景的效率解法​

算法并非只存在于学术论文或复杂系统中,在 Java 日常业务开发中,许多高频场景的性能瓶颈都需要通过算法优化来突破。从电商的库存扣减到支付的风控校验,从物流的路径规划到社交的消息推送,Java 算法以其简洁的实现、高效的执行&am…

作者头像 李华