CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  进程/线程/DLL

CreateIoCompletionPort函数是怎样和线程联系起来的??请熟悉完成端口模型的大虾执教。。

楼主lwglucky(才鸟)2001-12-07 14:24:51 在 VC/MFC / 进程/线程/DLL 提问

CompletionPort   =   CreateIoCompletionPort(INVALID_HANDLE_VALUE,   NULL,   0,0);        
      GetSystemInfo(&SystemInfo);  
  SystemInfo.dwNumberOfProcessors);  
   
        for(i   =   0;   i   <   SystemInfo.dwNumberOfProcessors   *   2;   i++)  
        {  
              HANDLE   ThreadHandle;  
              //   Create   a   server   worker   thread   and   pass   the   completion   port   to   the   thread.  
              if   ((ThreadHandle   =   CreateThread(NULL,   0,   ServerWorkerThread,   CompletionPort,0,   &ThreadID))   ==   NULL)     //---怎样把thead和CompletionPort   联系起来。??  
              //   Close   the   thread   handle  
              CloseHandle(ThreadHandle);       ----为啥要关闭线程??  
        }  
   
  SOCKET   Accept;  
  .....//略  
  CreateIoCompletionPort((HANDLE)   Accept,   CompletionPort,   (DWORD)   PerHandleData,  
                    0);  
  ------------------  
  问题如题。。。。 问题点数:20、回复次数:6Top

1 楼ciml(镜子)回复于 2001-12-07 14:35:42 得分 0

完成端口模型我概念都还没有,看《windows   网络编程技术》看不明白  
   
  你能讲讲你的理解吗?Top

2 楼ciml(镜子)回复于 2001-12-07 14:39:33 得分 0

另外,利用完成端口模型,是不是可以编写出高效的web服务器,邮件服务器了?Top

3 楼lwglucky(才鸟)回复于 2001-12-07 14:47:41 得分 0

关于性能:看msdn   文档  
  your   application   will   have   better   performance   if   you   create   one   thread   per   processor   and   build   queues   of   requests   for   which   the   application   maintains   the   context   information.   A   thread   would   process   all   requests   in   a   queue   before   processing   requests   in   the   next   queue.    
  Top

4 楼lwglucky(才鸟)回复于 2001-12-07 15:55:05 得分 0

怕被冲走。Top

5 楼chinadreamer(我们需要梦想)回复于 2001-12-07 17:29:29 得分 20

CloseHandle(ThreadHandle);   只是关闭了线程对象的句柄,并没有关闭线程的运行.  
  CreateIoCompletionPort函数只是创建完成端口对象(CompletionPort   =   CreateIoCompletionPort(INVALID_HANDLE_VALUE,   NULL,   0,0);)以及把套接字和完成端口对象关联起来(CreateIoCompletionPort((HANDLE)   Accept,   CompletionPort,   (DWORD)   PerHandleData,0);)  
  至于完成端口对象和线程的关联则是在你创建线程对象时(CreateThread(NULL,   0,   ServerWorkerThread,   CompletionPort,0,   &ThreadID);)把完成端口对象的句柄传递给线程,这样在线程中就可以通过调用GetQueuedCompletionStatus函数来接受I/O完成的通知,接收和发送数据.  
  完成端口模型之所以高效是因为采用多线程的方式,可以充分利用多处理器以及网络协议的性能Top

6 楼lwglucky(才鸟)回复于 2001-12-08 20:57:45 得分 0

楼上的可以联系吗?/  
  oicq:   14465340Top

相关问题

  • 线程函数 提问
  • 线程函数问题?
  • 访问端口用什么函数???急!!!!!!!!!!!!!!!!
  • 成员函数做线程的问题
  • 一个函数是否线程安全
  • 线程函数中不能用CListCtrl?
  • 线程对应的函数怎样使用类成员函数??
  • 请问:如何用成员函数作为线程函数
  • 线程函数怎样修改为类成员函数?
  • 在线程函数中的函数指针问题

关键词

  • createiocompletionport
  • systeminfo

得分解答快速导航

  • 帖主:lwglucky
  • chinadreamer

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo