std::acsyn
std::async
是C++11标准库中的一个函数模板,用于创建异步任务并返回一个std::future对象。可以将一个函数作为参数传递给std::async
,该函数将在一个新的线程中异步执行,并返回一个std::future对象,可以使用该对象检查任务的状态,等待任务的完成,并获取函数的返回值。
下面是一个简单的例子:
#include <iostream>
#include <future>
#include <chrono>
int func()
{
std::this_thread::sleep_for(std::chrono::seconds(2)); // 模拟耗时操作
return 42;
}
int main()
{
std::future<int> fut = std::async(std::launch::async, func);
std::cout << "Waiting for result...\n";
fut.wait();
std::cout << "Result: " << fut.get() << '\n';
return 0;
}
在上面的例子中,std::async
创建了一个新线程,并在其中异步执行func
函数。为了获取func
函数的返回值,程序调用了fut.wait
等待任务的完成,并调用fut.get
获取函数的返回值。注意,std::async
会立即返回,因此在使用std::future
对象获取结果之前,必须使用wait
等待任务完成。
需要注意的是,std::async
的第一个参数std::launch::async
表示任务将在一个新线程中异步执行。如果将std::launch::deferred
传递给第一个参数,则任务将延迟执行,并在调用std::future
的成员函数(如wait或get)时才执行,此时任务将在当前线程中同步执行。