我在用golang做一个股票数据存储的一个demo,用socket读取字节数据,然后就进行拆包解析,当利用goroutine惊喜数据分发处理时,字节数据会解析出乱码,而同步就不会,这让我很困扰,我觉得应该是应该和并发数据安全性有关系,然后又利用channel通道来传递数据发现效果还是一样
,代码如下
主函数 socket和redis连接
![微信截图_20180817140256.png](https://static.studygolang.com/180817/856be047966f6c8b6438451272d5b368.png)
数据接收函数
![微信截图_20180817161016.png](https://static.studygolang.com/180817/8f5407b3476bfb406c2cf508bb950d4f.png)
数据分发并解析函数
![微信截图_20180817161031.png](https://static.studygolang.com/180817/0e37191ab4e966d110bb970c2f25f206.png)
我这样处理是不是缺少应用了默写golang的机制呢?有没有什么解决办法?
最后说一句,golang的处理速度真的快,同步处理都比之前用.net异步处理还要快的多
代码在这里 https://github.com/liusiming0001/stocksocket
![微信截图_20180827142324.png](https://static.studygolang.com/180827/6b67dc00ecfab44b13d247d4b8b4c293.png)
试了好多方式,队列、redis等,确实解决了脏数据的问题,但是效率不高。
又试了试加了lock之后,好用了。。。。
我也没搞明白为什么会好使
#10
更多评论
正确的数据不会有乱码
![微信截图_20180817162052.png](https://static.studygolang.com/180817/15e45621587566fa699b04ec367d7899.png)
错误的数据,有乱码,可能字节数组已经被覆盖
![微信截图_20180817162037.png](https://static.studygolang.com/180817/4a9b8c1ec0941cc664700f853f8f779f.png)
#1