当前位置:  技术问答>linux和unix

求思路:linux C下多线程接收数据如何进行存储再统一处理

    来源: 互联网  发布时间:2017-03-18

    本文导语:   本人菜鸟一枚,临危受命,硬着头皮接受任务。现遇到严重的瓶颈求牛人提供思路。  问题如下:  用串口4接收有效反馈数据并对数据进行提取处理(PS;用Linux下多线程接收数据的函数前人已经写好了不用我操心)...

 本人菜鸟一枚,临危受命,硬着头皮接受任务。现遇到严重的瓶颈求牛人提供思路。
 问题如下:
 用串口4接收有效反馈数据并对数据进行提取处理(PS;用Linux下多线程接收数据的函数前人已经写好了不用我操心),接收有效反馈数据部分有一个专门的函数(函数1)处理,提取数据的部分字节并处理也有一个专门的函数(函数2)处理。现在的瓶颈是:串口4按反馈码字节的有效长度不停的来接收,接收完每串函数的全部字节后传给那个专门处理的函数2来进行相应的提取和操作。而我的反馈码需要根据不同的情况进行接收后再统一处理,反馈回来的数据非常多串,而且不能确定具体串数(要分视实际情况而定),即要在函数2里面把接收到的多次数据先进行提取有效字节后存储起来,等到接收完所有的的反馈码(因为都是在同一个函数里面处理所有很麻烦)后再统一把这些数据传给其他的变量,请问该如何处理?

|


其实你自己把问题复杂化了。

你直接设置一个最大的

char buffer[1024]//单个线程里面。

如果你需要在不同线程里面操作这个buffer

可以这样   char *buffer

然后 buffer = (char *)malloc(1024)//这样1024的缓冲一半就够了。不够可以继续扩充

如果你想动态分配空间,反而效率降低,

动态分配
malloc remalloc就足够了。

所以。你之前秒速了那么多。你唯一的思想就是把零碎的数据整合到一起是吧?

可以啊,没问题的,就这样就足够了。没必做的太复杂,太复杂反而效率更低。

|
malloc动态分配在堆上。

一个进程中的所有线程都共享。

所以。malloc出来的buffer。只要是同一个进程中,这些线程都可以共享操作。

当然你的做一些保护工作。用互斥锁,或者读写锁对这个buffer进行保护。

同步。

差不多了。

|
你还是贴代码吧。 
也许你的问题是一个很简单的问题, 也许是你没有描述清楚。 

所谓的堆啊,栈啊,或是什么stl,这些东西都不是线程安全的。 
既然你用到了多线程,首先要考虑的就是线程安全。。。

建议你学一下apr和glib,这两个库里有很多并行编程中用得到的东西。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 设计一个Linux的存储策略,求思路
  • 存储过程实现订单号,流水单号(8位)的详细思路
  • Windows C/ C++堆相关问题及解决思路
  • 求一种网站新闻管理程序的思路!
  • 求教电子合同的思路.
  • 谁能给我讲一下收邮件的思路?
  • 想用c写一个Httpserver,大家给点思路啊!!
  • 写调试器(像gdb)的一般思路是什么
  • 请大牛指导程序思路
  • 毕设题《linux下IPv6的流量监测控制系统》 求基础 求思路 求意见
  • 用GTK+怎么让treeview控件带上背景图片?哪位高人给个思路?
  • 开放平台设计思路 Rop
  • 给个思路吧,好迷茫
  • 各老大:有没有图像放大或压缩算法?或思路?
  • 要在arm开发板上实现DHCP+方式拨号上网,谁能给点下手的思路,知道不知道都给点意见吧?
  • 请问一个程序的思路,方法
  • jquery easyui表单重置扩展思路
  • mysql获得60天前unix时间思路及代码
  • 我要实现这样的功能,请各位给点思路
  • 请问怎么在java的控件里画条线?思路,过程?谢谢
  • 请给个思路!
  • !!!想用java来做一个动画设计软件,欢迎提点思路
  • 编写把一java程序中所有的print语句都删除,帮忙分析一下思路。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3