完成端口问题(急,请高手,在线等)

super_xxx 2003-06-19 03:37:33
监听线程中使用PostQueuedCompletionStatus
工作线程中使用GetQueuedCompletionStatus
GetQueuedCompletionStatus 取得的数据会不会是多次PostQueuedCompletionStatus的结果?如果是怎么把他们拆解出来,
完成端口的缓冲区有多大?分不够另加
...全文
26 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunbo103 2003-06-20
  • 打赏
  • 举报
回复
jup
flmttm 2003-06-20
  • 打赏
  • 举报
回复
up
super_xxx 2003-06-20
  • 打赏
  • 举报
回复
everandforever(Forever) :
是不是PostQueuedCompletionStatus执行一次以后GetQueuedCompletionStatus 马上来取走数据,如果是PostQueuedCompletionStatus执行了两次以上GetQueuedCompletionStatus 怎么取他的结果呢
everandforever 2003-06-20
  • 打赏
  • 举报
回复
Post一次, 线程就要GET一次;Post2次,线程就要Get两次.
everandforever 2003-06-19
  • 打赏
  • 举报
回复
GetQueuedCompletionStatus 取得的数据会不会是多次PostQueuedCompletionStatus的结果?如果是怎么把他们拆解出来,
完成端口的缓冲区有多大?分不够另加
_____________
你的题目我完全没有听懂.
naile 2003-06-19
  • 打赏
  • 举报
回复
会,不过在IOCP中除了主线程要各个工作线程停止时使用PostQueuedCompletionStatus以外,不大使用这个函数,当要关闭工作线程时,主线程发送与工作线程等多个停止记号,那么当一个线程受到一个停止信号后便会关闭,那么也不会再调用GetQueuedCompletionStatus,也就不会再受到停止标记。
要把他们拆分,可以在工作线程受到PostQueuedCompletionStatus发出的标记后sleep一段时间,那么它就不会在受到同样的标记,不过你要确认在sleep的时间内,其他工作线程能够调用GetQueuedCompletionStatus,不然还是没用。
还有一个方法比较傻,不过可供参考,就是党一个线程受到到PostQueuedCompletionStatus发出的标记后停止该线程,等到最后一个线程受到最后一个标记后,再启动与原来等多的此线程。
完成端口的缓冲区好像更系统有关。具体不大清楚。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧