异步Wt::Http::Client响应和请求匹配
Asynchronous Wt::Http::Client response and request matching
我是 Wt3(版本 3.3.9 - 因为 wole 项目正在使用它)的新手。我遇到了一个问题,现在正在寻找解决方案。
我想做一个多线程Wt::Http::Client。从文档中我了解到,使用 Wt::WIOService 和设置的线程数可以做到这一点,但我遇到了 识别哪个请求与处理的响应匹配的问题。
多线程使用 Wt::WIOService。
Wt::WIOService io_service;
io_service.setThreadCount(10);
io_service.start();
//
MyClass my_http_client(io_service);
my_http_client.Work();
//
io_service.stop();
在 Work() 中有一个循环读取请求队列并发送它们。
对于单线程,我正在使用下一段代码:
在 class 构造函数中扩展自 Wt::Http::Client:
done().connect(boost::bind(&MyClass::HandleHttpResponse, this, _1, _2));
处理方法:
void MyClass::HandleHttpResponse(boost::system::error_code err, const Wt::Http::Message response) {
std::unique_lock<std::mutex> lock(mutex_);
// response to inner format
// then all data goes to another class.
}
但是当我使用多线程时我需要将请求与响应完全匹配。我对 Wt documentation 的理解可能是错误的。
你能帮我解决这个问题吗?
Wt::Http::Client
的预期用途是为每个请求创建一个新实例。
我是 Wt3(版本 3.3.9 - 因为 wole 项目正在使用它)的新手。我遇到了一个问题,现在正在寻找解决方案。
我想做一个多线程Wt::Http::Client。从文档中我了解到,使用 Wt::WIOService 和设置的线程数可以做到这一点,但我遇到了 识别哪个请求与处理的响应匹配的问题。
多线程使用 Wt::WIOService。
Wt::WIOService io_service;
io_service.setThreadCount(10);
io_service.start();
//
MyClass my_http_client(io_service);
my_http_client.Work();
//
io_service.stop();
在 Work() 中有一个循环读取请求队列并发送它们。
对于单线程,我正在使用下一段代码:
在 class 构造函数中扩展自 Wt::Http::Client:
done().connect(boost::bind(&MyClass::HandleHttpResponse, this, _1, _2));
处理方法:
void MyClass::HandleHttpResponse(boost::system::error_code err, const Wt::Http::Message response) {
std::unique_lock<std::mutex> lock(mutex_);
// response to inner format
// then all data goes to another class.
}
但是当我使用多线程时我需要将请求与响应完全匹配。我对 Wt documentation 的理解可能是错误的。 你能帮我解决这个问题吗?
Wt::Http::Client
的预期用途是为每个请求创建一个新实例。