完成端口与套接字绑定的OVERLAPPED结构释放问题
来源:互联网 发布:诺基亚e71下载软件 编辑:程序博客网 时间:2024/06/01 18:01
1楼 hxzb7215191 (天行健,君子以自强不息) 回复于 2005-01-09 11:56:56 得分 10
很简单的
只要这样
CloseHandle(m_ComPortItemArray[Index].ovRead.hEvent);
然后你使用之前需要把这个结构清空一次.
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函数,关闭完成端口。最终安全退出程序。
- 完成端口与套接字绑定的OVERLAPPED结构释放问题
- IOCP中CompletionKey(完成键)与Overlapped(重叠结构体)的区别
- IOCP中CompletionKey(完成键)与Overlapped(重叠结构体)的区别
- iocp完成端口资源释放问题.
- 套接字与端口
- 端口与套接字
- accept()返回的套接字绑定哪个端口 新旧套接字的联系
- accept()返回的套接字绑定哪个端口 新旧套接字的联系
- 根据SOCKET套接字获得此套接字绑定的端口号
- VS2005 WINSOCK 网络端口 绑定套接字
- OVERLAPPED结构与GetOverlappedResult函数
- OVERLAPPED结构与GetOverlappedResult函数
- OVERLAPPED结构与GetOverlappedResult函数
- OVERLAPPED结构与GetOverlappedResult函数
- OVERLAPPED结构与GetOverlappedResult函数
- CRITICAL_SECTION结构与共享资源绑定的问题
- 我的Windows核心编程——完成端口+套接字 图解
- 套接字I/O模型-完成端口IOCP
- Visual SourceSafe简明培训教程(zz)
- 我的BLOG
- 重要的一天
- SVN的Local方式:个人源码管理的好办法 (zz)
- ORACLE OCP 考试指南
- 完成端口与套接字绑定的OVERLAPPED结构释放问题
- 于完成端口的数据接收问题
- 微软BestRank面试归来有感!
- 英文CV的词汇汇总------转自WALTER
- 标准英文cv格式
- 我也有了Gmail 6/1
- 男人女人
- 移动硬盘认不出或者copy会断线如何解决?
- 新的法规