我有 IOCP 应用程序,它为每个套接字上下文存储一个 64kb 缓冲区。它使用大量 RAM,同时处理数千个套接字。相反,我想切换到每个 iocp 线程上下文有一个 64kb 缓冲区的模型(就像我可以在 epoll 和 kqueue 中那样)。为此,我需要我的完成端口能够接收通知,而无需将字节复制到提供的 WSABUF,并且在通知之后只需调用异步 WSARecvFrom(不提供重叠结构,我使用 udp 进行测试),直到我收到 WSAEWOULDBLOCK。我已经读过,如果我为具有重叠结构的 WSARecvFrom 调用提供空的 WSABUF (buf = NULL, len =0),则可以实现以下技术。但它不起作用:IOCP 永远不会“唤醒”,因为缓冲区太小。
还有其他方法可以使这种情况成为可能吗?