mono,.net,异步socket_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > mono,.net,异步socket

mono,.net,异步socket

 2010/9/19 23:40:05  mathgl  http://mathgl.javaeye.com  我要评论(0)
  • 摘要:.net的异步socket有两种形式1,和其他asyncio类似的iasyncresult2,3.5后新增的socketasyncargs。。据msdn说第二种的性能有极大的提高。。我简单测试过。。在acceptsocket这里,,速度是很快,大约为前者的3-4倍测试环境winxpsp3前者1秒钟大约能accept500个socket后者可以达到2000个。。在处理数据收发方面两者的开销差不多,没有表现出特别明显的差异。。。但是在mono上就不是这么一回事了。。。mono2.6
  • 标签:mono .net 异步socket

.net的异步 socket有两种形式

?

1,和其他async io类似的 iasyncresult

?

2,3.5后新增的socketasyncargs。。

?

据msdn说 第二种的性能有极大的提高。。我简单测试过。。在 accept socket这里,,速度是很快,大约为前者的3-4倍

?

测试环境 win xp sp3

前者 1秒钟大约能accept 500个socket

?

后者 可以达到 2000个。。

?

在处理数据收发 方面 两者的开销差不多,没有表现出特别明显的差异。。。

?

但是在mono上就不是这么一回事了。。。mono 2.6.x后也多了一个 socketasyncargs的实现。但是文档是没有的。。iasyncresult 有文档。。描述和msdn大致上差不多。。。

?

在mail-list上有人提过mono上的socketasyncargs是用thread来对应每一个请求性能很低 云云。。再进一步的资料就没有了,于是决定一试

?

测试环境 ubuntu 9.10 desktop.. mono是从svn下的。2.8 preview的版本

?

默认的 ulimit -n 是 1024.。

?

iasyncresult 可以连接到1019.。然后报描述符溢出。。正常

?

socketasyncargs 只能连接到501 左右。。

?

修改 ulimit -n 到 12000。。测试 10000个 长连接

?

iasyncresult 可以正常工作。。 socketasyncargs 在连接到8601的时候 直接退出 报了一个assert 声明。。具体是什么没看。

?

由此推断。。socketasyncargs在mono上 没有使用到epoll,实现上也存在问题。。。

?

我看过 ice 3.4.1的代码,.net版本依然 还是使用 iasyncresult 并没有因为 socketasyncargs高效而替代。我想很有可能是为了兼容mono的原因。。。

?

如果要写一个跨平台的基于.net async socket server 建议还是使用 iasyncresult。。。

发表评论
用户名: 匿名