std::packaged_task
来自cppreference.com
该页由英文版wiki使用Google Translate机器翻译而来。
该翻译可能存在错误或用词不当。鼠标停留在文本上可以看到原版本。你可以帮助我们修正错误或改进翻译。参见说明请点击这里. |
在头文件 <future> 中定义
|
||
template< class > class packaged_task; //not defined |
(1) | (C++11 起) |
template< class R, class Args... > class packaged_task<R(Args...)>; |
(2) | (C++11 起) |
。类模板
std::packaged_task
包装任何可调用的目标(功能,lambda表达式,绑定表达式,或其他功能对象),以便它可以异步调用,它的返回值或抛出的异常是存储在共享的状态,这可以通过std::future一个对象.原文:
The class template
std::packaged_task
wraps any callable target (function, lambda expression, bind expression, or another function object) so that it can be invoked asynchronously, and its return value or exception thrown is stored in the shared state, which can be accessed through std::future objects.。就像std::function,
std::packaged_task
是一个多态,分配器知道容器:存储调用的目标可能被分配在堆上或提供的分配器.原文:
Just like std::function,
std::packaged_task
is a polymorphic, allocator-aware container: the stored callable target may be allocated on heap or with a provided allocator.目录 |
[编辑] 。成员函数。
构造的任务对象 (公共成员函数) | |
解构的任务对象 (公共成员函数) | |
移动的任务对象 (公共成员函数) | |
任务对象的检查,如果有一个有效的功能 原文: checks if the task object has a valid function (公共成员函数) | |
交换两个任务的对象 (公共成员函数) | |
| |
返回一个std::future与所承诺的结果 原文: returns a std::future associated with the promised result (公共成员函数) | |
| |
执行相应的功能 (公共成员函数) | |
执行的结果是只有一次准备退出当前线程的功能 原文: executes the function ensuring that the result is ready only once the current thread exits (公共成员函数) | |
复位放弃以前执行的任何存储结果的状态 原文: resets the state abandoning any stored results of previous executions (公共成员函数) |
[编辑] 。非成员函数。
专业的std::swap算法 (函数模板) |
[编辑] 。 Helper类。
专业的std::uses_allocator型特征 原文: specializes the std::uses_allocator type trait (类模板特化) |
[编辑] 。为例。
#include <iostream> #include <future> #include <thread> int main() { std::packaged_task<int()> task([](){return 7;}); // wrap the function std::future<int> result = task.get_future(); // get a future std::thread(std::move(task)).detach(); // launch on a thread std::cout << "Waiting..."; result.wait(); std::cout << "Done!\nResult is " << result.get() << '\n'; }
输出:
Waiting...Done! Result is 7
[编辑] 。另请参阅。
(C++11) |
等待一个值,该值被设置异步 原文: waits for a value that is set asynchronously (类模板) |