MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
packaged_task< Res(Args...)> 模板类 参考

异步任务包装类模板 更多...

#include <packaged_task.hpp>

Public 成员函数

 packaged_task () noexcept
 默认构造函数
template<typename Func, typename = enable_if_t<!is_same_v<packaged_task, remove_cvref_t<Func>>>>
 packaged_task (Func &&function)
 构造函数
 ~packaged_task ()
 析构函数
 packaged_task (const packaged_task &)=delete
 禁止拷贝构造
packaged_taskoperator= (const packaged_task &)=delete
 禁止拷贝赋值
 packaged_task (packaged_task &&other) noexcept
 移动构造函数
packaged_taskoperator= (packaged_task &&other) noexcept
 移动赋值运算符
void swap (packaged_task &other) noexcept
 交换两个packaged_task对象
bool valid () const noexcept
 检查任务是否有效
future< Res > get_future ()
 获取关联的future对象
void operator() (Args... args)
 执行任务
void make_ready_at_thread_exit (Args... args)
 在线程退出时标记任务完成
void reset ()
 重置任务

详细描述

template<typename Res, typename... Args>
class packaged_task< Res(Args...)>

异步任务包装类模板

模板参数
Res结果类型
Args参数类型

包装可调用对象,提供异步执行能力,并将执行结果或异常传递给关联的future。

在文件 packaged_task.hpp30 行定义.

构造及析构函数说明

◆ packaged_task() [1/3]

template<typename Res, typename... Args>
packaged_task< Res(Args...)>::packaged_task ( )
inlinenoexcept

默认构造函数

创建空的packaged_task对象,不关联任何任务。

在文件 packaged_task.hpp41 行定义.

被这些函数引用 operator=(), operator=(), packaged_task(), packaged_task(), reset() , 以及 swap().

◆ packaged_task() [2/3]

template<typename Res, typename... Args>
template<typename Func, typename = enable_if_t<!is_same_v<packaged_task, remove_cvref_t<Func>>>>
packaged_task< Res(Args...)>::packaged_task ( Func && function)
inlineexplicit

构造函数

模板参数
Func可调用类型
参数
function要包装的可调用对象

创建包装指定函数的packaged_task对象。 函数签名必须与模板参数Res Args...兼容。

在文件 packaged_task.hpp52 行定义.

引用了 _INNER, _MSTL , 以及 forward().

◆ ~packaged_task()

template<typename Res, typename... Args>
packaged_task< Res(Args...)>::~packaged_task ( )
inline

析构函数

如果存在关联的future且任务未执行,会自动设置broken_promise异常。

在文件 packaged_task.hpp61 行定义.

引用了 _MSTL , 以及 move().

◆ packaged_task() [3/3]

template<typename Res, typename... Args>
packaged_task< Res(Args...)>::packaged_task ( packaged_task< Res(Args...)> && other)
inlinenoexcept

移动构造函数

参数
other要移动的packaged_task对象

在文件 packaged_task.hpp74 行定义.

引用了 packaged_task() , 以及 swap().

成员函数说明

◆ get_future()

template<typename Res, typename... Args>
future< Res > packaged_task< Res(Args...)>::get_future ( )
inline

获取关联的future对象

返回
future对象
异常
future_exception如果future已被获取

在文件 packaged_task.hpp109 行定义.

◆ make_ready_at_thread_exit()

template<typename Res, typename... Args>
void packaged_task< Res(Args...)>::make_ready_at_thread_exit ( Args... args)
inline

在线程退出时标记任务完成

参数
args任务参数
异常
future_exception如果任务无效

执行任务但延迟结果设置,直到当前线程退出时才将结果传递给future。 适用于需要保证某些资源在结果设置前有效的场景。

在文件 packaged_task.hpp133 行定义.

引用了 _INNER, _MSTL , 以及 forward().

◆ operator()()

template<typename Res, typename... Args>
void packaged_task< Res(Args...)>::operator() ( Args... args)
inline

执行任务

参数
args任务参数
异常
future_exception如果任务无效

同步执行包装的任务,结果或异常会传递给关联的future。

在文件 packaged_task.hpp120 行定义.

引用了 _INNER, _MSTL , 以及 forward().

◆ operator=()

template<typename Res, typename... Args>
packaged_task & packaged_task< Res(Args...)>::operator= ( packaged_task< Res(Args...)> && other)
inlinenoexcept

移动赋值运算符

参数
other要移动的packaged_task对象
返回
当前对象的引用

在文件 packaged_task.hpp83 行定义.

引用了 _MSTL, move() , 以及 packaged_task().

◆ reset()

template<typename Res, typename... Args>
void packaged_task< Res(Args...)>::reset ( )
inline

重置任务

异常
future_exception如果任务无效

重置任务状态,可以重新关联新的future。 原有任务函数保持不变,但会创建新的共享状态。

在文件 packaged_task.hpp145 行定义.

引用了 _INNER , 以及 packaged_task().

◆ swap()

template<typename Res, typename... Args>
void packaged_task< Res(Args...)>::swap ( packaged_task< Res(Args...)> & other)
inlinenoexcept

交换两个packaged_task对象

参数
other要交换的packaged_task对象

在文件 packaged_task.hpp92 行定义.

引用了 packaged_task().

◆ valid()

template<typename Res, typename... Args>
bool packaged_task< Res(Args...)>::valid ( ) const
inlinenoexcept

检查任务是否有效

返回
是否关联了有效的可调用对象

在文件 packaged_task.hpp100 行定义.


该类的文档由以下文件生成: