在完成端口中,如果关闭一个SOCKET连接,不会产生程序崩溃
清水火 2010-07-08 03:46:39 哪位帅哥对完成端口模型熟悉些。有个问题请教一个:
1、建立一个SOCKET连接通过CreateIoCompletionPort()关联上一个完成端口。
2、用WSARecv投递接收数据事件,并将股递的Overlapped结构(是new出来的)指针保存在一个链表中。。用WSAsend投递发送数据事件,并将股递的Overlapped结构保存在另一个链表中。。
现在我要主动的关闭这个连接。这个地方需要怎么做?
我碰到的问题是:在关闭这个连接。如果我直接就closesocket的话。然后就将与这个连接相关的Overlapped缓冲区从两个链表中删除,但是这样的话,好像存在一个问题,假如这个两个股递的动作已经产生。内核正在接收数据,也就是说正在使用投递的BUF,而我却在这时产生了一个删除动作,那程序不是会崩掉,那我应该如果做才能解决这个问题呢?