注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

再谈“C#网络编程”  

2015-11-12 21:41:39|  分类: 网络服务编程技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

再谈“C#网络编程

从运行的实际环境来看,服务还是会出现“现在已经正在使用此 SocketAsyncEventArgs 实例进行异步套接字操作”,这次是出现在Accept的时候儿。而不是网上常说的发送和接收的时候儿。

由于SAEASocketAsyncEventArgs)对象在一个时刻中只能处于StartAcceptStartReceiveStartSend状态中的一种,所以当速度比较快或者发送接收数据的压力比较大的时候儿,就有可能出现上面这个问题。

解决这个问题的方法有两个方向

一、使用同步发送即把SendAnync改成Send,如果有时间就把它改了,否则就用第二种。

二、加控制,但这样在大连接时会引起性能的下降和编程的复杂度,正在纠结着呢。

1、加锁,在所有的SAEA对象上加锁控制。

2、保存状态到UserToken上。加判断,其实和上面的加锁没有啥区别。

所以说,解决方法就是同步/异步混合使用或者加锁,再或者三者都混合在一起,怎么着更能达到效果怎么着来。

  评论这张
 
阅读(237)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017