根据我对IOCP到目前为止的理解,当我创建一个完成端口并将套接字关联到它时,当一个套接字准备好被读取时,通知将被发送到完成端口。
但是如何处理send()
,我的意思是,如果我想发送数据,我应该拨打send()
吗?完成端口怎么样,是否收到有关send()
的任何通知?
答案 0 :(得分:6)
根据我对IOCP的理解,当我创建完成时 端口并将套接字关联到它,通知将被发送到 准备好读取套接字时的完成端口。
NO! IOCP机制的一个优点是,您可以将具有关联缓冲区的读/写请求排队到内核,并让内核线程池在内核状态下执行IO操作。它是I / O COMPLETION端口,即。操作完成后会通知您。
如果它是一个读取,你得到你的缓冲区,(指针),回到已加载的数据 - 你不必再次明确地读取/复制它。
如果是写入,则数据已经消失,返回的缓冲区(指针)。可以自由删除/重用/再处理/无论如何。