求消息转发经验,900分(200分)

  • 主题发起人 主题发起人 http
  • 开始时间 开始时间
H

http

Unregistered / Unconfirmed
GUEST, unregistred user!
谁有做过可靠,快速的消息转发例子,如从客户接收消息,后放入缓村,写入数据库
并同时处理处理,后转发给其他客户,是否需要来个消息对应一个线程,进行处理转发,
后结束次线程呢?缓村如何设计,是否需要对应每客户一个缓村(因为客户不多但消息多)
以便于处理呢,而且,缓存怎么设计读取最快?
 
通过tcpip,每个tcp/ip侦听端口的线程可以设置成多线程模式,每个消息都会激活一个
线程
 
1. 修改程序设计, 减少消息数

2. 用一个线程对应客户端, 消息放在一个队列里, 然后一个子线程只管往里写, 一个子
线程只管处理, 注意同步和互锁问题. 注意处理子线程的效率问题, 不行的时候可以增加
处理子线程的数量.
 
修改程序设计, 减少消息数
这不行,因为流程问题
>>用一个线程对应客户端
那要求SERVER用THREADBLOCKING了,对吧?
>> 消息放在一个队列里,然后一个子线程只管往里写, 一个子线程只管处理, 注意同步和互锁问题.
注意处理子线程的效率问题, 不行的时候可以增加处理子线程的数量.
一个子线程只管往里写,是写数据库,对吧?
》》同步与互锁的问题
我对这不太熟悉,有无例子呢,特别是我如果加了子线程数量呢?
而且,队列怎么设计
谢谢了
 
用udp不用线程
用tcp必须要
对于简单的消息转发用udp合算
对于聊天室类的还是用tcp的吧
缓存用同一个列队即可
过一段时间存入一次数据库
 
我想对一个客户一个缓村(因为客户不多,然后SERVER用BLOCK方式读缓村),
在收到信息后,读出包(放入数据库),然后放入对应客户缓存,服务端的线程
一直读这缓村,发完一个包就删除一个包,这情况下应该没有什么同步处理吧,因为
一个加,一个读后删除

 
这问题,做过ICQ类软件的人一定知道。
 
多人接受答案了。
 
后退
顶部