gpt4 book ai didi

c++ - IOCP:如果操作立即错误返回,我还能收到完成通知吗?

转载 作者:行者123 更新时间:2023-11-30 02:44:24 26 4
gpt4 key购买 nike

如果 FILE_SKIP_COMPLETION_PORT_ON_SUCCESS 启用,那么即使操作立即成功完成,我仍然会在完成端口上收到完成通知。我想知道如果它也立即完成并出现错误,是否属于这种情况。

我使用存储为扩展 OVERLAPPED 结构中的 std::function 的处理程序处理完成,并由在完成端口上循环的线程池执行。禁用 FILE_SKIP_COMPLETION_PORT_ON_SUCCESS 意味着我不必担心处理程序形成递归链,最坏的情况是,如果操作经常立即完成,则用完堆栈空间。启用跳过后,如果操作立即返回,则必须立即调用新操作的处理程序。

问题是处理程序应该在成功和错误时执行。但是,我不知道如果立即返回错误的重叠读/写/WSARecv/WSASend 是否仍会排队完成数据包,以便我可以允许线程池在处理程序中处理它,就像在成功案例。这可行吗?它是否只适用于某些类型的错误而不适用于其他类型的错误?解决方法?

最佳答案

This knowledge base article表示 SUCCESS 和 ERROR_IO_PENDING 导致生成完成数据包,而其他结果则不会。

见提示 4

关于c++ - IOCP:如果操作立即错误返回,我还能收到完成通知吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25334897/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com