Функция async
Функция async асинхронно запускает переданную функцию и возвращает объект future, который впоследствии позволит получить результат её выполнения. В первый параметр мы передаем политику запуска (например, launch::async или launch::deferred), а во второй - саму функцию или лямбда-выражение. Все последующие параметры являются аргументами для этой функции.
Синтаксис
#include <future>
std::async(policy, func, args...)
Пример
Давайте асинхронно запустим функцию, которая возвращает сумму двух чисел, и получим результат через метод get:
#include <iostream>
#include <future>
using namespace std;
int sum(int a, int b)
{
return a + b;
}
int main()
{
future<int> fut = async(launch::async, sum, 2, 3);
int res = fut.get();
cout << res << endl;
return 0;
}
Результат выполнения кода:
5
Пример
Давайте асинхронно запустим лямбда-выражение, которое возвращает строку, и получим результат через метод get:
#include <iostream>
#include <future>
#include <string>
using namespace std;
int main()
{
future<string> fut = async(launch::async, []() {
return string("abcde");
});
string res = fut.get();
cout << res << endl;
return 0;
}
Результат выполнения кода:
"abcde"