IOCP线程问题(在线等待)
IOCP中绑定端口以后
struct IOCONTENT{
WSAOVERLAPPEDoverlapped;
intstate;
union
{
SOCKETCONTENT*socketcontent;// recv消息接受缓存
SENDBUF*sendbuf;// send消息发送缓存
};
WSABUFwsabuf;
SOCKETsock;//send sock
}
IOCONTENT iocontent;
....
第一个线程调用函数
WSARecv(content->sock, &iocontent->wsabuf, 1, &numbytes, &flags, &iocontent->overlapped, NULL)
如果线程接收到消息
GetQueuedCompletionStatus
会由所相应
我得问题是:
如果GetQueuedCompletionStatus在执行响应时(代码还没执行结束)
WSARecv 又再次收到消息
这时消息缓存里的内容会不会就变了?
[解决办法]
bang ni ding...
[解决办法]
投递一个recv就接受一次消息。 你投递一次不会接受两次消息的。