gpt4 book ai didi

c++ - 对 udp::socket::async_receive_from 的多个并行调用 - 未定义的行为?

转载 作者:行者123 更新时间:2023-11-30 04:35:52 25 4
gpt4 key购买 nike

我正在使用 boost::asio 创建服务器应用程序,特别是 UDP API。现在我从一个池中启动多个线程,使用 async_receive_from 监听单独的缓冲区。这在我主要开发的 Ubuntu 上效果很好。

但是,在针对 Windows 进行编译时,我的回调会针对每个已发送的缓冲区调用多次,其中只有一个报告已找到某些内容,其他报告已发送零字节。

我查看了 boost::asio 文档,我知道必须连续调用写/读自由函数 - 但我无法找到任何关于 async_receive_ 函数是否同样适用的信息。

我应该只调用一次 async_receive_ 吗?

最佳答案

它适用于所有 async_xxx 函数,您绝不能在给定套接字上调用函数,直到前一个套接字完成 - 否则您最终会遇到垃圾(或未定义的行为)......

编辑:我在 Linux 上工作,我很惊讶你看到它正常工作,而我绝对不会。

再编辑一些:按照文档中所示进行操作,例如,在 async_read_some 调用的处理程序中,将下一次读取排队。

关于c++ - 对 udp::socket::async_receive_from 的多个并行调用 - 未定义的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4939188/

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