cpp_netlib文档包含示例HTTP 客户端,但我看到它仅在阻塞模式下工作:
http_client::response response = client.get(request);
- 这(我猜)将在等待服务器响应时停止程序执行。我可以在不产生多个线程的情况下使用 cpp_netlib 执行多个并发请求吗?我的意思是一种非阻塞方式,例如循环调用 io_service.poll() 并使用回调处理程序来捕获响应 - 以及等待响应时的一些额外处理。
cpp_netlib文档包含示例HTTP 客户端,但我看到它仅在阻塞模式下工作:
http_client::response response = client.get(request);
- 这(我猜)将在等待服务器响应时停止程序执行。我可以在不产生多个线程的情况下使用 cpp_netlib 执行多个并发请求吗?我的意思是一种非阻塞方式,例如循环调用 io_service.poll() 并使用回调处理程序来捕获响应 - 以及等待响应时的一些额外处理。
可以使用带有异步标签的 typedef 以非阻塞方式处理异步连接:
typedef boost::network::http::basic_client<
boost::network::http::tags::http_async_8bit_udp_resolve
, 1, 0> http_client;
但是目前还没有能力实现功能齐全的并发连接处理,通过回调和循环检查请求完成。不适用于当前 0.7 版本的库,也不适用于下一个 0.8。也许,这些功能将在 cpp_netlib 0.9 中实现。
有关更多详细信息,请查看 cpp_netlib 邮件列表存档:http: //sourceforge.net/mailarchive/message.php ?msg_name=AANLkTingb%2BB06YVyK%3D-XYAcZsQ2sZc%3DE%3DTPhAgcfjrTb%40mail.gmail.com