完成端口应用:效率与冲突的烦恼(300分)

  • 主题发起人 主题发起人 Another_eYes
  • 开始时间 开始时间
to copy_paste:
举个例子:
监听的socket收到client A发送的数据,然后对数据进行过滤, 之后将过滤后的数据加上标识这段数据属于client A的标记通过本地连其他server的一个socket发送出去。在这段处理过程中,极有可能连接其他server的socket收到一些数据,而这些数据中包含client A上次发送数据的回应,而此时另一个线程将处理这些数据,冲突在此时发生了...

另外,一个概念:
“client的当前应用状态”并不是指这个client连接的socket的内部状态, 而是指和该客户端相关连的一些应用层的数据
 
精彩哦,听听
 
是不是这个意思:
Transfer Client是进行转发数据,它处理当前进程中的IOCP中各个client里接收到和需要发送的数据的过滤/业务处理.
当TransferClientA正在需要进行转发IOCP.Client数据的时候,而且TransferClientB又接收到IOCP.Client的数据,需要将数据接收下来,业务逻辑处理,这样发生了冲突?
如果TransferClient为每个需要发送的数据做一个内存缓冲池的机制,我想应该没有这个问题吧.不能是发送和接收使用同一个内存块就行了.
TransferClientA需要转发数据,它分配一个内存块给它,TransferClientB接收数据,又是分配另一块内存,这样,两者互不冲突的.就没有数据紊乱的情况.而TransferClient本身就是串行工作的,而且与其它的Socket无关,就没有有机会冲突了.
而内存缓冲应该比较好处理,而且IOCP再处理TransferClient过滤后的数据,也是分开的,也不会有冲突的情况,也就无需处理互斥的情况了
感觉是这样,哈,没经实验.[:D]
 
呵呵,提前...
 
学习一下
 
请问Another_eYes最后是如何解决这个问题的?
 
后退
顶部