从asio处理程序生成新的异步请求
Spawning new async request from an asio handler
我正在尝试使用ASIO,并认为一个好的第一个项目应该是一个简单的网络爬虫:下载一个html页面,找到其中的链接,下载所有链接。
我已经尝试修改ASIO http客户端示例,使用enable_shared_from_this而不是原始指针,这样我就可以在前一个任务的处理程序中生成新的异步任务,而不必担心在工作过程中删除资源。
当我试图将我的客户端子类化以不同的方式处理不同的页面时,问题就开始了。编译器抱怨shared_ptr的类型与this
的类型不匹配。
有人知道这是怎么解决的吗?我还没能自己想清楚。
这与Asio无关。
如果您从enable_shared_from_this
继承了一个基类,但在派生的基类中需要它,请使用boost::static_pointer_cast
:
struct base : enable_shared_from_this<base>
{
};
struct derived : base
{
shared_ptr<derived> shared_from_derived()
{
return static_pointer_cast<derived>(shared_from_this());
}
};
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 如何在boost beast http请求中设置http头
- 发送一个带有libcurl C++问题的帖子请求:s
- 在多个核心中处理一个HTTP请求
- 如何在C++中实现带有packaged_task的异步等待循环?
- libcurl :C++处理多个异步请求
- 异步WT :: HTTP ::客户端响应和请求匹配
- 如何在 gRPC 的异步C++客户端中为每个请求设置超时?
- 使用多线程处理的异步请求
- 当发送多个同时请求时,单线程异步系统中Beast Boost异步HTTP客户端的行为
- 有关如何使用cpp-netlib进行异步HTTP获取请求的示例
- 从asio处理程序生成新的异步请求
- 使用lambda的异步请求/响应
- 重复发送http请求,速度更快(异步模式)
- 等待异步请求完成
- cURL:处理多个异步请求
- 如何使用pion进行异步HTTP请求
- 如何进行异步http请求-响应通信(在vc++中请求,在java中响应)
- 如何在c++中异步处理本地socket上的https请求响应