游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1366|回复: 1

IOCP通信 问题

[复制链接]

17

主题

25

帖子

33

积分

注册会员

Rank: 2

积分
33
发表于 2008-10-29 16:41:00 | 显示全部楼层 |阅读模式
我用一个线程打开IOCP通信
        BOOL isSuccess = GetQueuedCompletionStatus( completionPort, &bytesTransferred,
                        &completionKey, &overlapped, timeout );
请问最后一个参数设置了INFINITE等待,也就是timeout 为INFINITE

我想关闭这个线程了,但是我无法激活GetQueuedCompletionStatus,在没有连接通信的情况
关闭这个线程我用了强制 关闭。

请问,能唤醒GetQueuedCompletionStatus吗?
这样我那个线程就可以不用强制关闭了。

谢谢

0

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2008-11-6 10:04:00 | 显示全部楼层

Re:IOCP通信 问题

可以利用函数
BOOL PostQueuedCompletionStatus(
  HANDLE CompletionPort,            // handle to an I/O completion port
  DWORD dwNumberOfBytesTransferred, // bytes transferred
  ULONG_PTR dwCompletionKey,        // completion key
  LPOVERLAPPED lpOverlapped         // overlapped buffer
);
当你想关闭这个线程时,可以主动向IO完成端口发送一个特殊的结束工作线程的数据包,GetQueuedCompletionStatus()得到这个数据包时,你就可以return 这个线程.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-20 23:27

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表