首页 新闻 会员 周边 捐助

tcp转发问题,思考不出啊。急急急

0
[已解决问题] 解决于 2017-06-28 15:38

单线程循环收,多线程循环发送。单线程收到的数据,多线程每个均转发有且仅一次。有什么好的方案么

蕾蕾啦啦啦的主页 蕾蕾啦啦啦 | 菜鸟二级 | 园豆:216
提问于:2017-06-28 12:25
< >
分享
最佳答案
1

1,单线程收到数据之后,push到每个多线程的待分发队列。多线程每次维护自己的发送。

2,单线程维护一个待发送队列,等待多线程自己来取,这个方案略复杂,需要过滤已经发送的和维护很大难以clear的发送队列。

奖励园豆:5
hahanonym | 小虾三级 |园豆:1460 | 2017-06-28 14:01

加锁是push的时候加还是在多线程取的时候好一些

蕾蕾啦啦啦 | 园豆:216 (菜鸟二级) | 2017-06-28 14:04

此处发现个问题,当采用foreach 的push方法压入堆队列的时候,存在同步问题,既第一个队列可能没有延迟,第二三个可能越来越大

蕾蕾啦啦啦 | 园豆:216 (菜鸟二级) | 2017-06-28 14:31

@蕾蕾啦啦啦:

用线程安全的集合类,不用考虑加锁问题。

此处应该用队列。出入队列性能消耗比较小,瓶颈应该不会在这里

hahanonym | 园豆:1460 (小虾三级) | 2017-06-28 15:38
其他回答(2)
0

可否描述的详细一点,看的不太明白,不明白你的目的是什么

Bluto | 园豆:317 (菜鸟二级) | 2017-06-28 13:01
0

这是在说你需要消息队列么?

爱编程的大叔 | 园豆:30844 (高人七级) | 2017-06-28 15:35

对的,借鉴2L做法可以,不过这里需要建立多个消息队列了可能。

支持(0) 反对(0) 蕾蕾啦啦啦 | 园豆:216 (菜鸟二级) | 2017-06-28 15:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册