socket 的异步处理如不再需要了,需不需要 CancelIO ????比如我对一个 socket 用 WSARecv 异步方式来读然后用 WSAWaitForSingleObject 来等一个超时,如果超时了,那我就不再等待,认为该操作无效。这时我需不需要用 CancelIO 来取消在句柄上的IO操作呢?
但 WinSocket API 里没有 WSACancelIO 之类的。CancelIO 是属于文件操作类的只有一个 WSACancelAsyncRequest , 帮助上说,这个API 是用来取消 WSAAsyncGetXByY  这个请求的。到底该不该用 CancelIO,或用哪个函数来取消IO操作?

解决方案 »

  1.   

    我有使用 CancelIO , 但是我也不确定要不要,不过用了也没有出错。
    我有个进一步的问题现在还想不通:因为 CancelIO 要求在调用 IOCP API 相同的线程中调用,这样造成了需求操作非常的麻烦,请问那位有高见?
      

  2.   

    不需要,通过设置event来结束等待
      

  3.   

    不需要CancelIO, 不要再次recv就是了,或者直接closesocket
    -------------------------------------------------------
    广告:VC/WinAPI 网络/多线程讨论 QQ群, 群号:41356711