c++ - boost 异步读/写失败, "Insufficient system resources exist to complete the requested service"

标签 c++ boost boost-asio

我(貌似)随机收到错误:

"Insufficient system resources exist to complete the requested service"

当使用 boost::asio::async_read_untilboost::asio::async_write 串口时。

将串行端口声明为:

boost::asio::serial_port mSerialPort;

在这个错误之后,我尝试

try
{
    mSerialPort.cancel();
    mSerialPort.close();
}
catch(boost::system::system_error error)
{
    ;
}

其中一个(尚不确定是哪个)挂起并且永远不会返回,甚至不会抛出异常。

一般来说,这个错误是什么意思?

有人遇到过这个问题吗?我应该特别调查的任何方向?


编辑:

有问题的串行端口使用 USB 仿真器。

关于这个other SO Question ,特别是 Hans Passant 的评论,这个错误是否可能与设备驱动程序有关?我将相同的代码与另一个硬件组件一起使用,但从未出现过这种行为。


编辑 2:

在网络上搜索此特定错误消息时,通常建议按此处所述增加页面缓冲池内存:

Microsoft Support Article

在我的情况下这样做有什么意义吗?

最佳答案

自从我在 Windows 上使用串行端口以来已经有很长很长时间了,所以请牢记这一点。从历史上看,早在 NT 4.0 时代,大多数从官方 NT 内核 DDK 指南中注销的串行端口驱动程序都无法正确执行异步 i/o,并且会不时因您的确切错误而失败和/或锁定。解决方案是只使用同步 i/o 和串行 i/o,它工作正常。如果您的基于 USB 的串行端口的驱动程序最初足够古老,则可能会重复此问题。

我还会确保您使用的设计模式与已知的工作模式相同。尝试 http://www.ridgesolutions.ie/index.php/2012/12/13/boost-c-read-from-serial-port-with-timeout-example/举个例子。希望对您有所帮助。

关于c++ - boost 异步读/写失败, "Insufficient system resources exist to complete the requested service",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36205437/

相关文章:

c++ - 自动或手动在C/C++头文件中添加一些注释

c++ - 如何在窗口消息中发送 float

c++ - asio::ip::tcp::resolver::async_resolve 是否需要外部取消?

c++14 - 提升 asio 并发 async_read 和 async_write

c++ - 为什么没有 strand::wrap() 等同于 strand::post()?

C++ 线程名称映射和 log4cxx

c++ - 如何使用户输入多行

c++ Intel inspector 显示许多 boost 错误 - 我需要担心吗?

c++ - boost 路径指向的目录中文件的路径

c++ - Boost.Spirit.X3 中的 skipper