std::packaged_task<R(Args...)>::reset
来自cppreference.com
<tbody>
</tbody>
void reset(); |
(C++11 起) | |
重置状态,抛弃先前执行的结果。构造新的共享状态。
等价于 *this = packaged_task(std::move(f)),其中 f 是存储的任务。
参数
(无)
返回值
(无)
异常
- 若
*this无共享状态则为 std::future_error。设置错误条件为 no_state。 - 若无足够内存以分配新的共享状态则为 std::bad_alloc。
- 新
packaged_task的移动构造函数所抛的任何异常。
示例
运行此代码
#include <cmath>
#include <future>
#include <iostream>
#include <thread>
int main()
{
std::packaged_task<int(int,int)> task([](int a, int b)
{
return std::pow(a, b);
});
std::future<int> result = task.get_future();
task(2, 9);
std::cout << "2^9 = " << result.get() << '\n';
task.reset();
result = task.get_future();
std::thread task_td(std::move(task), 2, 10);
task_td.join();
std::cout << "2^10 = " << result.get() << '\n';
}
输出:
2^9 = 512
2^10 = 1024