#include
#include
#include
#include
#include
//我们通过向std::async()传递一个参数,该参数类型是std::lunnch类型(枚举类型),来达到一些特殊的目的
//std::lanuch::deferred:表示线程入口函数被延迟到std::future的wait()或者get()函数调用时才执行
//那如果wait()或者get()没有被调用,那么这个线程根本不会创建
//std::lauch:延迟调用,并且没有创建新的线程,是在主线程中调用的线程入口函数:
//std::lauch::async,在调用async函数的时候开始创建线程;
//async()函数默认用std::lauch::async,所以只需要注意:std::lanuch::deferred
//一:std::async,future创建后台任务并返回值
//希望线程返回一个结果:
//std::async是个函数模板,用来启动一个异步任务,启动起来一个异步任务之后,他返回一个std::future对象,std::future是个类模板
//下列程序通过std::future对象的get()成员函数等待线程执行结束并返回结果
//这个get()函数很牛,不拿到将来的返回值 誓不罢休,不拿到值就在这里等待拿值