gpt4 book ai didi

c++ - 等待异步请求完成

转载 作者:搜寻专家 更新时间:2023-10-31 01:16:27 25 4
gpt4 key购买 nike

我想用 boost 编写一个 HTTP 客户端。如果我设法做到以下几点,我就可以使用异步模型:

  • 第一步,向服务器发送请求。
  • 第二步,要么读取已经到达的响应,要么同步等待直到它到达。

这是一个看起来与我生成的类相似的类:

class HTTPClient {
public:
void sendTheRequest(...) {
// Send the HTTP request
}

std::string getTheResponse(...) {
// return the already (asynchronously) received response, or wait for it
// in this function
}
}

有人能指出如何实现这一点吗?我担心我缺乏 boost 方面的知识。

编辑说明:方法 sendTheRequest 将在某一时刻被调用。也许在它之后会立即调用 getTheResponse,但这也可能在几(毫秒)秒后发生。这就是为什么我想异步发送请求,但也需要同步等待。

最佳答案

Mabye 有点晚了,但我认为这应该可以了。 std::future::get 返回 send_request_function 的值,如果尚未返回则等待并在完成后返回。

class HTTPClient {
public:
void sendTheRequest(...) {
// Send the HTTP request
f = std::async(std::launch::async, send_request_function, args ...);

}

std::string getTheResponse(...) {
// return the already (asynchronously) received response, or wait for it
// in this function
return f.get();

}
private:
std::future<std::string> f;

}

关于c++ - 等待异步请求完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9087300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com