求思路:linux C下多线程接收数据如何进行存储再统一处理
本人菜鸟一枚,临危受命,硬着头皮接受任务。现遇到严重的瓶颈求牛人提供思路。
问题如下:
用串口4接收有效反馈数据并对数据进行提取处理(PS;用Linux下多线程接收数据的函数前人已经写好了不用我操心),接收有效反馈数据部分有一个专门的函数(函数1)处理,提取数据的部分字节并处理也有一个专门的函数(函数2)处理。现在的瓶颈是:串口4按反馈码字节的有效长度不停的来接收,接收完每串函数的全部字节后传给那个专门处理的函数2来进行相应的提取和操作。而我的反馈码需要根据不同的情况进行接收后再统一处理,反馈回来的数据非常多串,而且不能确定具体串数(要分视实际情况而定),即要在函数2里面把接收到的多次数据先进行提取有效字节后存储起来,等到接收完所有的的反馈码(因为都是在同一个函数里面处理所有很麻烦)后再统一把这些数据传给其他的变量,请问该如何处理?
------解决方案--------------------你还是贴代码吧。
也许你的问题是一个很简单的问题, 也许是你没有描述清楚。
所谓的堆啊,栈啊,或是什么stl,这些东西都不是线程安全的。
既然你用到了多线程,首先要考虑的就是线程安全。。。
建议你学一下apr和glib,这两个库里有很多并行编程中用得到的东西。
------解决方案--------------------
------解决方案--------------------
malloc动态分配在堆上。
一个进程中的所有线程都共享。
所以。malloc出来的buffer。只要是同一个进程中,这些线程都可以共享操作。
当然你的做一些保护工作。用互斥锁,或者读写锁对这个buffer进行保护。
同步。
差不多了。