"现在已经正在使用此 SocketAsyncEventArgs 实例进行异步套接字操作"的处理
2016-03-30 16:15
363 查看
"现在已经正在使用此 SocketAsyncEventArgs 实例进行异步套接字操作"
发现不少人在使用SocketAsyncEventArgs进行高性能通信开发时碰到此问题,但网络上没有具体的解决方案,因此记录分享下我的处理方式
首先此问题通常在接入连接、和数据发送、接收时出现此异常
1.接收连接时抛出此异常,需要实现接收连接的同步,使用semaphor等待即可
2.使用SocketAsyncEventArgs的核心是实现对象复用,减少对象的分配和回收从而提高程序性能。通常是使用stack或queue管理异步对象,我使用的是stack
stack池是后进先出,多线程数据的接收、发送和对象的pop、push会出现混乱(因此使用queue应该会更好),所以需要实现它们之间的同步
同步实现的方式是在一个连接断开的时候使用lock保证对异步对象的操作同步即可,因为只有在连接断开时才会有异步对象的pop和push。
以上只是我个人解决此问题的思路和方式,具体情况具体分析,希望可以帮到你
发现不少人在使用SocketAsyncEventArgs进行高性能通信开发时碰到此问题,但网络上没有具体的解决方案,因此记录分享下我的处理方式
首先此问题通常在接入连接、和数据发送、接收时出现此异常
1.接收连接时抛出此异常,需要实现接收连接的同步,使用semaphor等待即可
2.使用SocketAsyncEventArgs的核心是实现对象复用,减少对象的分配和回收从而提高程序性能。通常是使用stack或queue管理异步对象,我使用的是stack
stack池是后进先出,多线程数据的接收、发送和对象的pop、push会出现混乱(因此使用queue应该会更好),所以需要实现它们之间的同步
同步实现的方式是在一个连接断开的时候使用lock保证对异步对象的操作同步即可,因为只有在连接断开时才会有异步对象的pop和push。
以上只是我个人解决此问题的思路和方式,具体情况具体分析,希望可以帮到你
相关文章推荐
- SocketAsyncEventArgs
- Android深入浅出之Binder机制
- ORA-12505,TNS:listener does not currently know of SID given in connect descriptor
- Log4net 使用指南
- Spring MVC + MyBatis整合(IntelliJ IDEA环境下)
- IOS开发-UI学习-UIImageView控件
- Input file 调用相机
- NSDateFormatter的说明
- C函数
- jQuery - css() 方法
- 《Python核心编程》第八章:条件和循环
- swift开发笔记27 一个错误
- js初学笔记(一)
- 深入理解android之IPC机制与Binder框架
- MySql EXPLAIN Output Format(Mysql执行计划分析参数)
- I/O重定向
- Oracle SQL 经典查询练手第四篇
- 安卓开发——运行错误:Unable to find explicit activity class
- Android 权限 exproted 的作用
- C++ 中如何用 vector类作为函数的参数