首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

boost:asio 线程间的数据的发送,该怎么解决

2013-09-28 
boost::asio 线程间的数据的发送假设现在有线程1 线程2线程3和 线程100 以及主线程现在线程1,2,3在同一时

boost::asio 线程间的数据的发送
假设现在有  线程1 线程2   线程3  和 线程100 以及主线程
现在线程1,2,3在同一时间发送数据给线程100. 线程100要怎么处理才能不漏掉数据。

现在我遇到的问题是1,2,3线程向线程100分别发送数据,同一时间接收了一个线程的数据就会漏掉其他线程的数据。
[解决办法]

引用:
线程1,2,3发送数据我都放到了一个数据队列里面。开通另外一个线程来处理这个队列,一有数据进来我就发送。 线程100是另外一个进程里面的,专门处理接收消息。 还是前面的问题线程1,2,3发产生数据放到数据队列中,当几乎同一时间产生了3个数据,线程100只运行了一次。而发送端的确运行了三次。 很不解


shit,holy shit! 你这里说的意思 和你主楼说的是一个意思么? 


[解决办法]
Boost::asio的通讯是基于数据流通讯的。

所以你发的3次数据是都收到了,但是估计你的数据包很小,所以底层发送时把包合并了

你的100号线程在处理的时候是按包处理的,并没有分包处理是吧?

所以100号线程收到的数据结构应该是这样的:

1号包数据+2号包数据+3号包数据

你只处理了1号包数据后,就把整个包扔了
[解决办法]
线程同步互斥的问题,
中间加个缓冲, 然后不就是生产者 消费者问题

热点排行