packaged_task构造packaged_task对象。 packaged_task::~packaged_task 析构函数销毁packaged_task对象。 公共方法 名称描述 get_future返回具有相同关联异步状态的future对象。 make_ready_at_thread_exit调用存储在关联异步状态中的可调用的对象,并以原子方式存储返回值。
packaged_task::get_future傳回類型 future<Ty> 的物件,該物件具有相同的「相關聯非同步狀態」。C++ 複製 future<Ty> get_future(); 備註如果packaged_task 物件沒有相關聯的非同步狀態,則這個方法會擲回含有 no_state 錯誤碼的 future_error。如果已經針對具有同一個相關聯的非同步狀態的 packaged_task 物件...
}voidtask_bind(){std::packaged_task<int()>task(std::bind(f,2,11)); std::future<int> result = task.get_future();task(); std::cout <<"task_bind:\t"<< result.get() << std::endl; } voidtask_thread(){std::packaged_task<int(int,int)>task(f); std::future<int> result = ...
傳回具有相同 相關聯的非同步狀態型別 future<Ty> 的物件。c++ 複製 future<Ty> get_future(); 備註如果packaged_task 物件沒有 no_state錯誤碼的有相關聯的非同步狀態,這個方法會擲回 future_error。如果這個方法使用同一個相關聯的非同步狀態的 packaged_task 物件已經呼叫,具有 future_already_retrieved錯誤...
std::packaged_task<int(int)> tsk([](intx) {returnx *3; }));//package taskstd::future<int> fut = tsk.get_future();//获取 future 对象.std::thread(std::move(tsk),100).detach();//生成新线程并调用packaged_task.intvalue = fut.get();//等待任务完成, 并获取结果.std::cout<<"The...
类模板std::packaged_task<>具有成员函数get_future(),它返回std::future<>实例,该future的特化类型取决于函数签名所指定的返回值。 std::packaged_task<>还具备函数调用操作符,它的参数取决于函数签名的参数列表。 std::packaged_task对象是可调用对象,我们可以直接调用,还可以将其包装在std::function对象内,当作...
std::future 对象(该对象通常在另外一个线程中获取 std::packaged_task 任务的执行结果)。
std::packaged_task 对象内部包含了两个最基本元素,一、被包装的任务(stored task),任务(task)是一个可调用的对象,如函数指针、成员函数指针或者函数对象;二、共享状态(shared state),可以通过 std::packged_task::get_future() 来获取与共享状态相关联的 std::future 对象,在调用该函数之后,两个对象共享相同...
std::packaged_task<void()> task(f);//1 std::future<void> res = task.get_future(); std::lock_guard<std::mutex> lk(m); tasks.push_back(std::move(task)); return res; } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
(f);std::future<std::string>res=task.get_future();std::lock_guard<std::mutex>lk(mt);tasks.push_back(std::move(task));returnres;}voidstart_422(){for(inti=0;i<3;++i){futures.push_back(post_task_for_gui([=]()->std::string{std::this_thread::sleep_for(3s);returnstd::...