我有一个用 C# 编写的快速而肮脏的概念证明应用程序,它从网络读取高数据速率多播 UDP 数据包。由于各种原因,完整的实现将用 C++ 编写,我正在考虑使用 boost asio。C# 版本使用线程通过阻塞读取来接收数据。如果计算机负载很重(通常在另一个线程中处理这些数据包),我会遇到一些丢弃数据包的问题。
我想知道的是 boost 中的异步读取操作(在 windows 中使用重叠 io)是否有助于确保我接收数据包和/或减少接收数据包所需的 cpu 时间。执行阻塞读取的单线程非常简单,使用异步读取似乎更复杂,但我认为如果它提供更高的性能或在重负载系统上丢弃更少的数据包,那将是值得的。目前数据速率应不高于 60Mb/s。