线程池实现.docVIP

  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文档。上传文档
查看更多
线程池实现

线程池实现 Afxpool.exe 是一个自解压缩的可执行文件,其中包含演示为基于 MFC 的 ISAPI 扩展创建线程池的方法的一个 Microsoft Visual C++ 6.0 项目所需的文件。 本文解释在 ISAPI 扩展内创建工作线程池的步骤。通常,当 ISAPI 扩展需要大量处理时间来完成一个请求时,需要创建单独的控制线程来处理该过程。有关其他信息,请参见以下 Microsoft 知识库文章: 185518 如何使用 MFC ISAPI 扩展实现工作线程 但是,如果为每个新请求都创建一个新的控制线程,则会对服务器的性能产生很大影响。因此,最好是创建一个可以“回收”线程的工作线程池。这种方法的作用是,将在处理新请求的开销中除去创建新线程的开销。 ISAPI 扩展在第一次初始化时将发生创建线程的开销,但是对于每个请求,它将只从线程池中请求可用的工作线程。 回到顶端 可以从 Microsoft 下载中心下载以下文件: Afxpool.exe 有关如何下载 Microsoft 支持文件的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 119591 如何从联机服务获取 Microsoft 支持文件 Microsoft 已对此文件进行了病毒扫描。Microsoft 使用的是该文件发布时可以获得的最新病毒检测软件。该文件存储在安全性得到增强的服务器上,以防止在未经授权的情况下对其进行更改。 文件名 大小 --------------------------------------------------------- ExtThreadPool.aps 18,436 ExtThreadPool.clw 420 ExtThreadPool.cpp 6,184 ExtThreadPool.def 173 ExtThreadPool.dsp 4,332 ExtThreadPool.dsw 549 ExtThreadPool.h 1,560 ExtThreadPool.ncb 66,560 ExtThreadPool.opt 54,784 ExtThreadPool.plg 723 ExtThreadPool.rc 3,242 ExtThreadPool.rc2 405 Resource.h 322 StdAfx.cpp 215 StdAfx.h 669 ThreadPool.cpp 3,130 ThreadPool.h 863 线程池使用 Windows NT 和 Windows 2000 操作系统系列下的可用完成端口。这种线程池的基本原理是创建一个单独的完成端口,使所有的工作线程在此完成端口上等待,当新请求进入时,将该请求发送至此完成端口。完成端口机制可确保只有一个控制线程获得这个新请求的通知。 如果不使用完成端口而使用其他同步对象(如信号灯),也可以创建并管理线程池。但是,使用完成端口时,操作系统会以最有效的方式调度和释放线程(即“后进先出”)。 在典型的 ISAPI 扩展中,“ISAPI MFC 向导”将创建两个虚函数:GetExtensionVersion 和 TerminateExtension。完成端口的初始化是在 GetExtensionVersion 中通过调用 CreateIoCompletionPort 来完成的。请注意,使用此函数的最后一个参数,您可以指定可同时从线程池中运行的线程数。最有效的方法是使运行的线程数与 CPU 数相同。最后一个参数如果是 0,则表示允许操作系统选取与 CPU 数相匹配的线程数。 BOOL CExtThreadPoolExtension::GetExtensionVersion( HSE_VERSION_INFO* pVer) { // Call default implementation for initialization CHttpServer::GetExtensionVersion(pVer); // Load description string TCHAR sz[HSE_MAX_EXT_DLL_NAME_LEN+1]; ISAPIVERIFY(::LoadString(AfxGetResourceHan

文档评论(0)

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

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

1亿VIP精品文档

相关文档