电子政务网站建设的特点,医疗器械注册证查询,网站进不去怎么解决,公司网站在哪备案.NET平台下几种SOCKET模型的简要性能供参考 这个内容在cnblogs中也讨论过很多次了#xff0c;这两天大概看了一些资料#xff0c;看到一些简单的性能指标拿出来和大家讨论一下。 Socket Threads/ThreadPool 大概性能#xff1a;小于1500个连接 实现#xff1a;Accept一个….NET平台下几种SOCKET模型的简要性能供参考 这个内容在cnblogs中也讨论过很多次了这两天大概看了一些资料看到一些简单的性能指标拿出来和大家讨论一下。 Socket Threads/ThreadPool 大概性能小于1500个连接 实现Accept一个Socket就交给一个线程去管理比较笨但也比较有效因为是同步方式控制起来很方便。高级点的就是交给一个线程池去管理线程池由系统自动托管省去了开销线程的时间。一般小型项目用这个完全足够开发也简单。但要注意如果若干Socket长时间占用线程池中的线程同时其它连接数又比较多很容易出现提示说你没有足够的线程供使用。呵呵让Socket少做点事少占用时间换一个快点的CPU是不错的方式。另外如果有一些比较好的第三方线程池组件也可以选择使用比如SmartThreadPool。 Socket Select 大概性能大于1500个连接后性能下降 实现Select是很常用的一种模型。是在阻塞功能中轮询一个或多个Socket将要处理的Socket放到一个IList中当Select轮询结束后然后我们再自己处理这个IList中的Socket。具体的用法可以看一下MSDN。Select的效率并不能说是高的因为当队列中待处理的Socket比较多的时候处理最后几个Socket相当于要遍历所有前面的Socket非常不划算的。 Socket Asynchronous 大概性能约7500个客户端连接 实现BeginXXXXEndXXXX再熟悉不过了吧。异步Socket归根到底还是用的线程池技术用线程池来处理异步IO。这就又引出个问题.NET的线程池又是用的什么实现方式以前看过有人说.NET的线程池是用的完成端口来实现的我不知道这样的说法是不是正确从查到的资料中也没有办法确认希望这点有朋友可以告诉我。异步Socket对于程序的处理流程来说比同步复杂了许多异步回调函数的控制不如同步方式那样直观。但有一点我想应该是要注意的就是回调函数应该轻装上阵不应该处理过多的事务对传递数据的处理应该交给其它线程进行处理。 IOCP完成端口 大概性能约20000~50000个客户端连接 实现现在.NET下有一些伪IOCP大家可以去搜索一下还没有见过开放出来的用这些伪IOCP来实现的SOCKET例子。我说的20000~50000个客户端连接是指在C下开发的情况这样的情况下需要用到的基本技术还包括内存池、查询算法等。 伪IOCP能实现多少最大连接没有资料可以查如果有朋友知道可以讨论一下。另外上面提到的许多数据是从一些资料上摘抄下来的我没有自己试过仅仅是拿出来和大家讨论一下。我想一个高性能的服务端程序可能需要的技术不仅仅是采用什么模型还有许多细节需要注意比如内存的处理采用什么算法等等当然这仅仅是软件成本上的硬件上肯定也是需要投入的。 转http://www.cnblogs.com/asilas/archive/2006/01/05/311309.html 转载于:https://www.cnblogs.com/Bonker/p/3360946.html