类模板std::packaged_task包装任何可调用(Callable)目标(函数、lambda 表达式、bind 表达式或其他函数对象),使得能异步调用它。其返回值或所抛异常被存储于能通过std::future对象访问的共享状态中。 正如std::function,std::packaged_task是多态、具分配器的容器:可在堆上或以提供的分配器分配其所存储的可调用目标。
std::packaged_task<int(conststd::vector<int>&)>lambda_pask_task(sum_labmda); 首先,类模版packaged_task需要传入一个模版参数,这里传入的是int(const std::vector<int>&),该参数是用来告诉packaged_task其接受的可调用对象对应的函数调用签名是什么,这里第1个int是用来代表可调用对象返回值类型是int,其接受...
packaged_task( packaged_task&& rhs ); (5) (since C++11) 构造一个新的std::packaged_task对象。 1%29构造一个std::packaged_task对象,没有任务和共享状态。 2%29构造一个std::packaged_task对象具有共享状态和任务的副本,并在std::forward<F>(f)此构造函数不参与重载解决方案。std::decay<F>::type是...
std::packaged_task可以包装一个任务(task),这个任务是一个可调用对象(Callable Object),对象保存此任务执行后的值,通常会将此值与另外线程中的std::future对象共享。所以packaged_task对象有两个最基本的元素: 被打包的任务(task),是一个可调用对象 共享状态的值(shared state),用于保存任务的返回值,可以通过std...
#include <cmath>#include <future>#include <iostream>#include <thread>intmain(){std::packaged_task<int(int,int)>task([](inta,intb){returnstd::pow(a, b);});std::future<int>result=task.get_future();task(2,9);std::cout<<"2^9 = "<<result.get()<<'\n';task.reset();result=...
cppreference.com 创建账户 页面 讨论 变换 查看 编辑 历史 std::packaged_task<R(Args...)>::operator()C++ 并发支持库 std::packaged_task void operator()( ArgTypes... args ); (C++11 起) 如同以 INVOKE<R>(f, args...) 调用存储的任务 f。任务返回值或任何抛出的异常被存储于共享状态。令...
void swap( packaged_task<Function(Args...)> &lhs, packaged_task<Function(Args...)> &rhs ) noexcept; (since C++11) Specializes the std::swap algorithm for std::packaged_task. Exchanges the state of lhs with that of rhs. Effectively calls lhs.swap(rhs). Parameters lhs, rhs - pack...
https://en.cppreference.com/w/cpp/thread/packaged_task std::packaged_task 包装一个可调用的对象,并且允许异步获取该可调用对象产生的结果,从包装可调用对象意义上来讲,std::packaged_task 与 std::function 类似,只不过 std::packaged_task 将其包装的可调用对象的执行结果传递给一个 std::future 对象(该...
C++11中的std::packaged_task是个模板类。std::packaged_task包装任何可调⽤⽬标(函数、lambda表达式、bind表达式、函数对象)以便它可以被异步调⽤。它的返回值或抛出的异常被存储于能通过std::future对象访问的共享状态中。std::packaged_task类似于std::function,但是会⾃动将其结果传递给std::future对象。...
std::packaged_task::make_ready_at_thread_exit void make_ready_at_thread_exit( ArgTypes... args ); (since C++11) 调用已转发的存储任务args作为争论。任务或其引发的任何异常的返回值存储在*this... 的所有对象和当前线程退出之后,共享状态才会就绪。线程局部存储时间被销毁。 参数 args - the ...