完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我是用paho-mqtt 进行数据上报,并处理请求。数据处理时间较长,写入pipe的同时;socket接收到请求,这个时候在paho_mqtt_thread的select会同时接收到c->pub_pipe[0]可读,c->sock可读,这个时候程序会优先处理c->sock,不会再次处理c->pub_pipe[0],导致数据丢失。 有什么解决办法吗 |
|
相关推荐
1个回答
|
|
|
针对您在 paho-mqtt 中因 原因分析
解决方案方法一:修改事件循环逻辑(推荐)在 关键修改:方法二:确保 Pipe 数据完全读取在 方法三:增加 Pipe 缓冲区大小(备选)通过系统调用扩大管道缓冲区,减少溢出的可能性: 方法四:使用线程安全队列(高级方案)如果管道仍不稳定,改用线程安全队列传递数据:
注意事项
总结首选方法一(修改事件循环逻辑)并配合方法二(循环读取 Pipe),确保:
这样即可解决因事件处理顺序导致的数据丢失问题。如问题复杂,可结合线程安全队列(方法四)提升可靠性。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
184个成员聚集在这个小组
加入小组rtstudio是否可像keil加载ini解决虚拟串口与mcu串口通讯?
1211 浏览 0 评论
【Vision Board创客营连载体验】基于RA8D1-Vision Board的自动路径规划小车
1775 浏览 1 评论
【Vision Board创客营连载体验】基于Vision Board的垃圾分类
2156 浏览 0 评论
【Vision Board创客营连载体验】使用 Vision Board 做一个 UVC Camera
1777 浏览 0 评论
【Vision Board创客营连载体验】TinyMaix进行手写数字识别
2004 浏览 0 评论
1461浏览 5评论
在RT-Thread Studio中新建的stm32f407-atk-explorer工程运行qemu失败,是什么原因引起的?
1764浏览 3评论
为什么rt_device_read()只能读取到两个字节数据?
359浏览 3评论
连得上热点,但是ping baidu.com出现timeout,请问跟什么有关?
418浏览 3评论
413浏览 2评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 10:37 , Processed in 0.784337 second(s), Total 77, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
756
