C++中的std::future是一个用于表示异步操作结果的类模板。它允许程序在一个线程中启动一个异步任务,并在需要时获取任务的结果。当任务完成时,可以通过std::future获取任务的返回值。
为了在std::future完成时执行回调函数,可以使用std::future的then成员函数。该函数接受一个可调用对象,并在std::future的任务完成时调用该对象。回调函数的执行是异步的,它可以在任意线程上执行。
以下是使用C++中的std::future实现回调的示例代码:
#include <iostream>
#include <future>
void callback(int result) {
std::cout << "Callback called with result: " << result << std::endl;
// 执行回调函数的其他操作
}
int main() {
// 启动异步任务,并返回一个std::future对象
std::future<int> future_result = std::async(std::launch::async, [](){
// 执行异步任务的操作
// 这里假设异步任务的返回结果为42
return 42;
});
// 在std::future完成时执行回调函数
std::future<void> future_callback = future_result.then(callback);
// 等待回调函数完成
future_callback.wait();
return 0;
}
在上述示例中,通过std::async函数启动了一个异步任务,并将结果保存在std::future对象future_result中。然后,使用future_result的then函数指定回调函数callback。最后,通过调用future_callback的wait函数等待回调函数的完成。
C++中的std::future提供了一种方便的方式来处理异步操作的结果,并且通过回调函数可以在任务完成时执行特定的操作。这对于处理异步编程中的并发任务非常有用。
腾讯云提供的与C++相关的产品和服务,如服务器托管、云函数、容器服务等,可以提供可靠的计算资源,使得开发者能够方便地进行C++应用程序的部署和运行。
领取专属 10元无门槛券
手把手带您无忧上云