C++中的std::async()函数究竟是如何实现异步执行并返回future对象的?

2026-04-19 03:052阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1140个文字,预计阅读时间需要5分钟。

C++中的std::async()函数究竟是如何实现异步执行并返回future对象的?

plaintext

1.std::async函数原型:

template future async( launch policy, Fn fn, Args... args); 功能:第二个参数接收一个可调用对象(如函数、lambda表达式、成员函数等)。

1、std::async函数原型:

template<class Fn, class... Args> future<typename result_of<Fn(Args...)>::type> async(launch policy, Fn&& fn, Args&&...args);

功能:第二个参数接收一个可调用对象(仿函数、lambda表达式、类成员函数、普通函数......)作为参数,并且异步或是同步执行他们。

a、对于是异步执行还是同步执行,由第一个参数的执行策略决定:

(1)、std::launch::async 传递的可调用对象异步执行;

(2)、std::launch::deferred 传递的可调用对象同步执行;

(3)、std::launch::async | std::launch::deferred 可以异步或是同步,取决于操作系统,我们无法控制;

(4)、如果我们不指定策略,则相当于(3)。

b、对于执行结果:

我们可以使用get、wait、wait_for、wait_until等待执行结束,区别是get可以获得执行的结果。

阅读全文

本文共计1140个文字,预计阅读时间需要5分钟。

C++中的std::async()函数究竟是如何实现异步执行并返回future对象的?

plaintext

1.std::async函数原型:

template future async( launch policy, Fn fn, Args... args); 功能:第二个参数接收一个可调用对象(如函数、lambda表达式、成员函数等)。

1、std::async函数原型:

template<class Fn, class... Args> future<typename result_of<Fn(Args...)>::type> async(launch policy, Fn&& fn, Args&&...args);

功能:第二个参数接收一个可调用对象(仿函数、lambda表达式、类成员函数、普通函数......)作为参数,并且异步或是同步执行他们。

a、对于是异步执行还是同步执行,由第一个参数的执行策略决定:

(1)、std::launch::async 传递的可调用对象异步执行;

(2)、std::launch::deferred 传递的可调用对象同步执行;

(3)、std::launch::async | std::launch::deferred 可以异步或是同步,取决于操作系统,我们无法控制;

(4)、如果我们不指定策略,则相当于(3)。

b、对于执行结果:

我们可以使用get、wait、wait_for、wait_until等待执行结束,区别是get可以获得执行的结果。

阅读全文