C++异步回调是如何实现的

   2024-10-06 5310
核心提示:在C++中,实现异步回调通常会使用多线程或者异步任务库来实现。以下是一种简单的实现方式:使用std::async和std::future:std::a

在C++中,实现异步回调通常会使用多线程或者异步任务库来实现。以下是一种简单的实现方式:

使用std::async和std::future:std::async函数可以在新的线程中异步执行一个函数,并返回一个std::future对象,用于获取函数执行的结果。可以在主线程中继续执行其他操作,然后通过std::future对象获取函数执行的结果。
#include <iostream>#include <future>void asyncFunction(std::promise<int>& prom) {    // 模拟异步操作    std::this_thread::sleep_for(std::chrono::seconds(2));    int result = 42;    prom.set_value(result);}int main() {    std::promise<int> prom;    std::future<int> fut = prom.get_future();    std::async(std::launch::async, asyncFunction, std::ref(prom));    // 继续执行其他操作    std::cout << "Doing something else..." << std::endl;    // 获取异步操作的结果    int result = fut.get();    std::cout << "Async function result: " << result << std::endl;    return 0;}
使用回调函数:可以定义一个回调函数,在异步操作完成后调用该回调函数,并传递结果。
#include <iostream>#include <chrono>#include <functional>void asyncFunction(std::function<void(int)> callback) {    // 模拟异步操作    std::this_thread::sleep_for(std::chrono::seconds(2));    int result = 42;    callback(result);}void callbackFunction(int result) {    std::cout << "Async function result: " << result << std::endl;}int main() {    asyncFunction(callbackFunction);    // 继续执行其他操作    std::cout << "Doing something else..." << std::endl;    return 0;}

这些方法可以帮助实现异步回调,在C++中实现异步操作并在操作完成后执行回调函数。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号