Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
线程通信
多个线程间数据通信问题
发布于 2021-10-23 10:31:39 浏览:910
订阅该版
[tocm] ## 现在的问题是 我的系统有多个采样数据线程,将采集到的数据需要上传到本地显示屏和远端控制中心,那这多个采样线程怎么和这两个显示线程通信呢? ## 问题1 采用邮箱+内存池的话,如果创建一个邮箱,那优先级高的显示线程拿到数据后,内存池的动态内存就释放掉了。另外一个显示线程就拿不到数据了,消息队列的方式也是一样的情况。这种情况是要创建两个邮箱+内存池或者两个消息队列嘛?采集线程采集到数据把同一个数据分别存入两个邮箱,然后显示线程去读取,是这种方法吗?如果不是,那有什么好的方法吗? ## 问题2 我有四个采样线程,那这四个采样线程的数据是每一个线程创建两个邮箱给到显示屏吗?如果是这样的话,那每个显示屏需要等待4个邮箱,那会不会有问题呢?有什么好的解决方式嘛? ## 问题3 如果不采用消息队列或者邮箱+内存池的方式,那可以使用事件集的方式嘛?每个采样线程创建一个事件,当四个采样线程都采集数据完毕后,在显示屏线程判断事件,然后读取数据。这样的话,那采集的数据放到哪里啊,显示屏又该怎么读取呢?采用全局数组嘛?两个显示程序都去全局数组里面拿数据,这样的话,数据安全性和一致性有保证吗?
查看更多
3
个回答
默认排序
按发布时间排序
李肯陪你玩赚嵌入式
认证专家
2021-10-23
2022年度和2023年度RT-Thread社区优秀开源布道师,COC深圳城市开发者社区主理人,专注于嵌入式物联网的架构设计
# 案例分析 针对你题中的问题,我理解可以考虑使用**事件驱动模型**来处理。 # 解决方案 我先简单画了下我的设计方案,仅供参考。 在参考这个图之间,建议先通读下这篇关于事件驱动的文章:[干货 | 用FreeRTOS搭建Event-Driven应用框架](https://mp.weixin.qq.com/s/726qlzK3Uagx_iZxLat_8A) ![image.png](https://oss-club.rt-thread.org/uploads/20211023/de4f96174a236bf2e823090560412323.png.webp) 这个设计图体现的就是,4个采集线程共用2条消息队列,一条消息队列专供**本地显示**,另一条消息队列专供**远端上传**,这样可以把事件的处理解耦开来。 这个方案,有一点点的缺点就是,在同样的事件存在于2条队列中,稍微多耗了一些内存。
flashman2002
2021-10-23
这家伙很懒,什么也没写!
建议是每个采样线程都上传2次消息队列,一个给本地显示,一个给远端发送数据线程即可。
出出啊
2021-10-25
恃人不如自恃,人之为己者不如己之自为也
这个有一个前提,采样频度比较低,比如每秒不到 10 次。每通道采样一次耗时比较集中而且很快,例如 spi 或者 iic 接口和 adc 这种方式。可以四个通道采样使用一个线程,四个通道挨个采样,采样线程给其它线程挨个发信号,之后进入几十毫秒的延时休眠,等待下次采样。 如果采样比较频繁,每秒几十次。可以把采样数据放到共享内存(全局变量内存),显示线程定时间隔刷新界面从共享内存获取数据刷新显示。要求每次采样都上传,就每次采样单独给上传线程发信号,然后上传线程去共享内存获取数据。 线程不要太多,信号、队列也不要太多。采样频度低的时候也可以这么做。 一个通道一个采样线程的方式,线程数量有点儿多,很难保证四个通道的数据同步,有可能采样间隔比较长,比一个线程挨个采样四个通道使用的时间长。
撰写答案
登录
注册新账号
关注者
1
被浏览
910
关于作者
吕蛋蛋
这家伙很懒,什么也没写!
提问
56
回答
14
被采纳
0
关注TA
发私信
相关问题
1
关于线程间用邮箱通信
2
线程1对多通信 使用邮箱吗
3
哪里有适合初学者的资料吗?
4
关于线程1对多通信的疑惑
5
邮箱断言问题,接收时出错
6
多源文件下的线程通信问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
7
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部