IO完成端口UDP套接字,实现和WSASendTo

时间:2016-06-15 00:19:45

标签: c++ udp iocp overlapped-io

我需要开发一个在UDP套接字中使用IOCP的应用程序,但这些材料在Microsoft文档中作为其他示例找到,或者模糊或以实现的形式集中。我希望有使用IOCP经验的人确认正确的用法是:

  • 调用CreateIoCompletionPort函数以创建IOCP。
  • 我将我的套接字与具有相同功能的IOCP相关联。
  • 执行IO操作(在我的情况下为WSARecvFrom或WSASendTo)
  • 调用GetQueuedCompletionStatus函数,该函数将阻止我的进程,直到我的IO操作完成(例如,这可以在线程池中完成)
  • 实现缓冲区的读取或操作结果。

我没有描述套接字的实现,因为它不是焦点,但这是使用IOCP的正确方法吗?

第二个问题是关于应用程序设计,在发送信息的情况下。我读过一些内容,说与IOCP一起使用的应用程序不会使用对输出操作的直接调用(例如直接调用WSASendTo函数),而是使用PostQueuedCompletionStatus函数在线程中生成一个事件来运行此操作。根据我所研究的内容,我认为在性能方面没有任何优势。

假设两个表单都应用于线程池,使用PostQueuedCompletionStatus执行输出操作是有好处的吗?

0 个答案:

没有答案