如果要使用std::async运行任务,就没有理由去创建std::package_task对象。因为std::async调用时,内部会创建一个基类为_Packaged_state类 “共享状态”的子类对象,而std::package_task也会创建_Packaged_state类的对象。可见std::async能够在调用任务执行之前就做到std::package_task能做到的任何事情,也可以避免重复创...
std::cout<< get_time_now() <<",thread id:"<< std::this_thread::get_id() <<",finished in"<< __FUNCTION__ <<std::endl; }voidpackaged_task_bind(constint&len) { std::packaged_task<std::string()>task(std::bind(get_uuid_for_len, std::cref(len))); std::future<std::string...
例2 std::package_task 的使用 void test() { //封装一个异步操作 std::packaged_task<int()> task([]() { std::this_thread::sleep_for(std::chrono::seconds(5)); return 7; }); std::thread t1(std::ref(task)); std::future<int> f1 = task.get_future(); std::cout << "Waiting...
std::cout<<"Lift off!"<<std::endl;returnfrom-to; }voidpackage_task_get_future() { std::packaged_task<int(int,int)>tsk(countdown); std::future<int> fut=tsk.get_future(); std::thread t1(std::move(tsk),10,0);intvalue=fut.get(); std::cout<<"The countdown lasted for"<<valu...