使用完成端口编写高性能服务器程序的研究.docVIP

使用完成端口编写高性能服务器程序的研究.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用完成端口编写高性能服务器程序的研究 杨健兵1 季先锋2 (1.南京工业大学信息科学与工程学院,江苏省南京市,210009) (2.南通市公共交通总公司,江苏省南通市,226001) 摘 要:介绍了用完成端口编写高性能服务器程序,为了提高系统性能,采用完成端口和Windows Socket2.0结合可以开发出支持大量连接的网络服务程序,并结合实际应用阐述了在完成端口上处理数据的方法。 关键字:完成端口 多线程 重叠I/O winsock 中图法分类号:TP393.03 文献标识码:A research of developing high performance server program using completion ports Yang jianbing1 Ji xianfeng2 1. College of Information Science and Engineering, Nanjing 2. Nantong Public Transportation Company, Nantong Abstract: introduces how to write high performance server program using completion ports, in order to improving the efficiency of program, developing a high performance program should use completion ports and winsock which supporting multiple connections in the same time, a successful solution is also given to process data in completion port. Key words: completions ports, multiple threads, overlapped I/O, winsock 1、Winsock简介 Winsock是在windows下得到广泛应用的、开放的、支持多种协议的网络编程接口, 它主要用于网络中的数据通信,允许两个或两个以上的应用程序或进程通过网络进行通信。使用Winsock,应用程序可以通过网络通信协议如TCP/IP,IPX/SPX,ATM建立通讯。这种接口是独立于协议的。Winsock定义了三种类型的套接字:流式套接字(the stream socket)、数据报套接字(the datagram socket) 和原始套接字(the raw socket)。流式套接字采用的是TCP/IP 协议,它提供了双向、有序、无重复且无记录边界的数据流服务, 其特点是通信可靠, 对数据有校验和重发的机制, 适合大量可靠的数据传输。数据报套接字采用的是UDP协议,提供无连接数据报传输, 支持双向的数据流, 但并不保证可靠有序。原始套接字接口允许对较底层协议直接访问, 常用于检验新的协议, 实现或访问现有服务器中配置的新设备。Winsock2共有如下几种I/0模型,阻塞模型、select模型、WSAAsyncSelect模型、WSAEventSelect模型、重叠模型和完成端口模型。 2、完成端口模型(Completion Ports) 2.1完成端口简介 完成端口模型 (I/O completion ports)是迄今为止为复杂的一种I/O模型【1】,假如一个程序需要管理为数多的套接字,那么采用这种模型往往可以达到最佳的系统性能,因其设计的复杂性,只有应用程序需要同时管理数百乃至上千个套接字的时候,而且希望随着系统内安装CPU 数量的增多,应用程序的性能呈线性提升时,才考虑采用完成端口模型。完成端口模型是唯一适用于高负载服务器的一种技术。 我们可以把完成端口看成系统维护的一个队列,操作系统把重叠IO操作完成的事件通知放到该队列里。一个socket被创建后,可以在任何时刻和一个完成端口联系起来,当与完成端口相关联的socket上的异步I/O 完成时,操作系统会向完成端口发送一个完成通知包。通过GetQueuedCompletionStatus()函数可以获取I/O操作结果。由于一个完成端口能够管理为数众多的套接字,所以用完成端口编写的服务器程序能够达到最佳的系统性能。而且随着服务器CPU数量的增加,应用程序的性能也会得到线形的提高。 2.2线程的数量 一般来说,一个应用程序可以创建多个工作器线程来处理完成端口上的通知事件。但是在理想的情况下,应该对应一个CPU创建一个线程。因为在完成端口理想模型中,每个线程都可以从系统获得一定的时间片,轮番运行并检查完成端口。但是在实际

文档评论(0)

22255990 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档