c++ - 不使用堆内存的高速 CAN 数据处理
问题描述
我有一个情况:
基本上有3个模块命名为'A','B','C'。每个模块都涉及多线程。
模块“A”获取高速数据(20ms)并发送。模块“B”的线程之一拾取。
模块“B”提取相关数据并进行一些位操作活动并将其广播,以便模块“C”的任何一个线程拾取并执行其自己的活动。
现在假设模块'B'中的数据在处理时需要一些位操作,当我们发送数据时,每个CAN(控制器区域网络)数据都使用堆分配,因为每个数据都有自己的内存,所以每次数据(20ms)进入 B 模块时,都会创建一个堆内存。因此,堆使用量很大。
我不能使用局部变量,因为其他模块不知道它。
我也尝试使用静态/全局,但缺点是因为数据很快。当静态变量获取数据并传递给将要广播的函数时,数据可能会更新为新值(并且可能会丢失数据)。
我也不能使用锁定系统,因为每个模块都会有不同的线程并且上下文也不相同。
有什么办法,可以避免使用动态内存分配?
如果有人不完全理解它,请告诉我,我会尝试再次重新构建问题。请原谅我的英语
解决方案
您问:
有什么办法可以避免大量使用动态内存分配?(编辑我的)
是的,但是有太多的方法可以做到这一点,而不是指向一个单一的解决方案。
最简单的可能是标准库容器,然后使用它们的reserve
(参见https://en.cppreference.com/w/cpp/container/vector/reserve)功能(或仅依赖指数增长)。
https://en.cppreference.com/w/cpp/container
https://en.cppreference.com/w/cpp/container/vector
推荐阅读
- sql - 如何申请加入sequelize
- sql - SQL - 每小时选择最多数量的类别
- css - 从 antd 设计中删除页脚后的样式问题
- openlayers - Openlayers 6.9.0:更改鼠标位置坐标的位置
- java - 如何避免将服务作为参数传递
- sql - 将数据导入 R 时,雪花日期偏移 1 天
- react-native - ReactNative PanResponder - 限制移动
- scala - coursier 发布 scala 3.1.0
- excel - 将错误输入的 MDY General Format 转换为 DMY UK Date Format 从一列到另一列
- python - 我正在尝试导入用户定义的函数,但出现此错误,我在此代码中做错了什么?