CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  网络编程

完成端口问题,做过的都知道的。。。。。

楼主jingtan(双塔高,百花艳)2005-01-08 19:41:38 在 VC/MFC / 网络编程 提问

 
  与套接字绑定的OVERLAPPED结构一般来说在什么时候释放?    
  释放的时候要注意些什么问题?? 问题点数:50、回复次数:4Top

1 楼hxzb7215191(天行健,君子以自强不息)回复于 2005-01-09 11:56:56 得分 10

很简单的  
  只要这样  
   
  CloseHandle(m_ComPortItemArray[Index].ovRead.hEvent);  
   
  然后你使用之前需要把这个结构清空一次.Top

2 楼kingzai(stevenzhu)回复于 2005-01-09 13:58:59 得分 30

如何正确地关闭I/O完成端口一—特别是同时运行了一个或多个线程,在几个不同的套接字上执行I/O操作的时候。要避免的一个重要问题是在进行重叠I/O操作的同时,强行释放—个OVERLAPPED结构。要想避免出现这种情况,最好的办法是针对每个套接字句柄,调用closesocket函数。任何尚未进行的重叠I/O操作都会完成。—旦所有套接字句柄都已关闭。便需在完成端口上,终止所有工作者线程的运行。要想做到这一点,需要使用  
  PostQueuedCompletionStatus函数,向每个工作者线程都发送—个特殊的完成数据包。该函数会指示每个线程都“立即结束并退出”.下面是PostQueuedCompletionStatus函数的定义:    
  BOOL   PostQueuedCompletionStatus(  
          HANDLE   CompletlonPort,  
          DW0RD     dwNumberOfBytesTrlansferred,  
          DWORD     dwCompletlonKey,  
  LPOVERLAPPED   lpoverlapped,  
  );  
          其中,CompletionPort参数指定想向其发送一个完成数据包的完成端口对象。而就dwNumberOfBytesTransferred,dwCompletionKey和lpOverlapped这三个参数来说.每—个都允许我们指定—个值,直接传递给GetQueuedCompletionStatus函数中对应的参数。这样—来。—个工作者线程收到传递过来的三个GetQueuedCompletionStatus函数参数后,便可根据由这三个参数的某一个设置的特殊值,决定何时应该退出。例如,可用dwCompletionPort参数传递0值,而—个工作者线程会将其解释成中止指令。一旦所有工作者线程都已关闭,便可使用CloseHandle函数,关闭完成端口。最终安全退出程序。Top

3 楼lianglp(寻找黄金分割点)回复于 2005-01-09 14:33:40 得分 10

在关闭这个套接字的时候就可以了。Top

4 楼CompletionPort()回复于 2005-01-17 15:30:48 得分 0

markTop

相关问题

  • 完成端口,WSASend
  • 用完成端口做过线程池的高手看过来
  • 关于完成端口
  • 关于完成端口
  • 【求助】在完成端口IOCP模型下如何知道客户端已关闭连接(掉线)?
  • 采用完成端口, 同时建立多个连接怎么做?
  • 如何关闭完成端口
  • 关于完成端口(COMPLETION PORT)
  • 关于Socket的完成端口模型
  • 关于完成端口的讨论

关键词

  • 函数
  • 端口
  • 线程
  • 结构
  • 参数
  • 工作者线程
  • 完成端口
  • postqueuedcompletionstatus
  • lpoverlapped
  • o操作

得分解答快速导航

  • 帖主:jingtan
  • hxzb7215191
  • kingzai
  • lianglp

相关链接

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

广告也精彩

反馈

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