- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
完成端口模型的使用与分析
摘 要:完成端口是一种复杂的win32内核对象。应用程序可以用完成端口管理线程池为大量的异步i/o请求提供服务,而不必为每个i/o请求分别创建服务线程。完成端口模型用于开发服务器应用程序,以提供优良的伸缩性和获得最好的系统性能。本文构建了一个基本的网络服务器程序框架,对完成端口模型的用法进行阐述与分析。
关键词:完成端口;线程池;套接字
the usage and analysis of completion port model zhou peng,huang can,jiang nan(unit 91550 of pla, dalian 116023, liaoning)
【abstract】completion port is a complicated win32 kernel object. applications can provide service for a large number of
asynchronous i/o requests by using completion port to manage thread pool, and needn’t create service threads for each i/o request. completion port model is used to develop server application to provide excellent scalability and get the best system performance. this paper constructed a basic network server application framework, expatiated and analyzed the usage of completion port model.
【key words】completion port; thread pool; socket
0 引言
在win32中,套接字是一个指向传输提供者的句柄[1]。winsock提供了锁定和非锁定两种套接字模式,以决定winsock函数随套接字调用时的行为。锁定模式虽然容易使用,但对于建立连接的多个套接字,或数据收发量不均,时间不规律的情况,却难以管理;而非锁定模式则难以处理winsock函数调用时可能会收到的wsaewouldblock错误。
为了解决套接字模式存在的限制,winsock提供了一些套接字模型,帮助应用程序通过异步方式,一次对一个或多个套接字上进行的i/o操作加以管理。这些模型包括:select(选择)、wsaasyncselect(异步选择)、wsaeventselect(事件选择)、overlapped i/o(重叠i/o)和completion port(完成端口)。
相对于其它套接字模型,完成端口模型是最复杂的、也是伸缩性最好的一种模型。当应用程序作为服务器为大量套接字的i/o请求提供服务时,使用这种模型会获得最好的系统性能。许多高性能服务器,如apache、iis等,都使用了完成端口模型的技术[2]。因此,掌握完成端口模型的用法和工作机制是非常必要的。
1 完成端口模型的使用和分析
下面将构建一个基本的网络服务器程序框架,对使用完成端口模型管理大量套接字的方法加以论述。程序框架的构建步骤如下:
(1)创建一个完成端口;
(2)创建线程池;
(3)创建套接字监听客户连接请求;
(4)为完成端口关联连接返回的套接字;
(5)在建立的连接上进行i/o操作。
1.1 创建完成端口
要创建完成端口,应调用createiocompletionport函数:handle createiocompletionport(handle hfile,
handle hexistingcompletionport,
dword dwcompletionkey,
dword dwnumberofconcurrentthreads);该函数完成两种不同的工作:(1)创建一个完成端口;(2)把一个设备同完成端口相关联。如果只创建一个完成端口,可以这样调用函数:
handle hiocp = createiocompletionport(invalid_ handle_value, null, 0, 0);
参数dwnumberofconcurrentthreads定义了完成端口能够同时运行的最多线程数。如果该参数为0,完成端口缺省允许的并发线程数目是计算机上的cpu数目。这样,每个
cpu可以运行一个线程,以避免多余的线程上下文切换,节省cpu的周期。如果处理一个客户请求需要一段比较长的时间,为了提高应用程序的伸缩性,可能需要增大
您可能关注的文档
- 教材插图是课堂教学的重要资源.doc
- 教好初中思想品德课的策略.doc
- 教师如何给学生习作下评语.doc
- 开孔铝板幕墙(金属罩)施工质量控制技术.doc
- 开展任务型语言教学,构建精彩英语课堂.doc
- 楼房外墙裂缝防渗漏的方法.doc
- 某洗涤剂生产废水的工程设计与应用.doc
- 平等参与式教学之我见.doc
- 普通高校体育教师职称结构的横向比较研究.doc
- 浅析初中政治课堂上三种教学模式.doc
- 第十一章 电流和电路专题特训二 实物图与电路图的互画 教学设计 2024-2025学年鲁科版物理九年级上册.docx
- 人教版七年级上册信息技术6.3加工音频素材 教学设计.docx
- 5.1自然地理环境的整体性 说课教案 (1).docx
- 4.1 夯实法治基础 教学设计-2023-2024学年统编版九年级道德与法治上册.docx
- 3.1 光的色彩 颜色 电子教案 2023-2024学年苏科版为了八年级上学期.docx
- 小学体育与健康 四年级下册健康教育 教案.docx
- 2024-2025学年初中数学九年级下册北京课改版(2024)教学设计合集.docx
- 2024-2025学年初中科学七年级下册浙教版(2024)教学设计合集.docx
- 2024-2025学年小学信息技术(信息科技)六年级下册浙摄影版(2013)教学设计合集.docx
- 2024-2025学年小学美术二年级下册人美版(常锐伦、欧京海)教学设计合集.docx
文档评论(0)