Console Library 8.0.0
A header-only library that makes C++ simple
Loading...
Searching...
No Matches
console::Task< T > Class Template Reference

异步任务类,用于在后台线程中执行任务。 More...

#include <task.h>

Public Member Functions

 Task ()=default
 默认构造函数。
template<class F, class... Args>
 Task (F &&f, Args &&...args)
 构造函数,接受一个可调用对象和参数,启动异步任务。
 Task (const Task &)=delete
 删除拷贝构造函数。
Task & operator= (const Task &)=delete
 删除拷贝赋值运算符。
 Task (Task &&other) noexcept
 移动构造函数。
Task & operator= (Task &&other) noexcept
 移动赋值运算符。
 ~Task ()
 析构函数。
template<class F, class... Args>
std::enable_if<!is_callable< F, constEvent &, Args... >::value >::type start (F &&f, Args &&...args)
 启动异步任务。
template<class F, class... Args>
std::enable_if< is_callable< F, constEvent &, Args... >::value >::type start (F &&f, Args &&...args)
T get ()
 获取异步任务的返回值。
bool valid ()
 检查异步任务是否有效。
void wait () const
 等待异步任务完成。
template<class Rep, class Period>
std::future_status wait_for (const std::chrono::duration< Rep, Period > &timeout) const
 等待异步任务完成,最多等待指定时间。
std::future_status wait_for (Time timeout) const
 等待异步任务完成,最多等待指定时间。
std::future_status wait_for (double seconds) const
 等待异步任务完成,最多等待指定时间。
template<class Clock, class Duration>
std::future_status wait_until (const std::chrono::time_point< Clock, Duration > &time_point) const
 等待异步任务完成,最多等待指定时间。
std::future_status status () const
 获取异步任务的状态。
void cancel ()
 取消异步任务。

Private Attributes

std::future< T > future_
 任务的返回值
std::thread thread_
 任务执行的线程
std::unique_ptr< Event > event_
 事件标志

Detailed Description

template<class T>
class console::Task< T >

异步任务类,用于在后台线程中执行任务。

Template Parameters
T任务返回值的类型。
Note
Task 的限制与 std::future 几乎一致,如:
  • 线程不安全,需手动同步。
  • 仅一次获取结果,再次调用将抛出异常。
  • 不可拷贝,仅可移动。

Constructor & Destructor Documentation

◆ Task() [1/4]

template<class T>
console::Task< T >::Task ( )
default

默认构造函数。

◆ Task() [2/4]

template<class T>
template<class F, class... Args>
console::Task< T >::Task ( F && f,
Args &&... args )
inlineexplicit

构造函数,接受一个可调用对象和参数,启动异步任务。

Template Parameters
F可调用对象的类型。
Args参数的类型。
Parameters
f可调用对象。
args参数。
Note
若需传递引用,需使用 std::ref/cref 包装。

◆ Task() [3/4]

template<class T>
console::Task< T >::Task ( const Task< T > & )
delete

删除拷贝构造函数。

◆ Task() [4/4]

template<class T>
console::Task< T >::Task ( Task< T > && other)
inlinenoexcept

移动构造函数。

Parameters
other要移动的 Task 对象。

◆ ~Task()

template<class T>
console::Task< T >::~Task ( )
inline

析构函数。

Member Function Documentation

◆ cancel()

template<class T>
void console::Task< T >::cancel ( )
inline

取消异步任务。

停止线程并设置异常,以表示任务已被取消。

◆ get()

template<class T>
T console::Task< T >::get ( )
inline

获取异步任务的返回值。

Returns
异步任务的返回值。

◆ operator=() [1/2]

template<class T>
Task & console::Task< T >::operator= ( const Task< T > & )
delete

删除拷贝赋值运算符。

◆ operator=() [2/2]

template<class T>
Task & console::Task< T >::operator= ( Task< T > && other)
inlinenoexcept

移动赋值运算符。

Parameters
other要移动的 Task 对象。
Returns
移动后的 Task 对象的引用。

◆ start() [1/2]

template<class T>
template<class F, class... Args>
std::enable_if< is_callable< F, constEvent &, Args... >::value >::type console::Task< T >::start ( F && f,
Args &&... args )
inline

◆ start() [2/2]

template<class T>
template<class F, class... Args>
std::enable_if<!is_callable< F, constEvent &, Args... >::value >::type console::Task< T >::start ( F && f,
Args &&... args )
inline

启动异步任务。

Template Parameters
F要执行的函数类型。
Args要传递给函数的参数类型。
Parameters
f要执行的函数。
args要传递给函数的参数。
Note
若需传递引用,需使用 std::ref/cref 包装。

◆ status()

template<class T>
std::future_status console::Task< T >::status ( ) const
inline

获取异步任务的状态。

Returns
异步任务的状态。

◆ valid()

template<class T>
bool console::Task< T >::valid ( )
inline

检查异步任务是否有效。

Returns
若任务有效则返回 true,否则返回 false。

◆ wait()

template<class T>
void console::Task< T >::wait ( ) const
inline

等待异步任务完成。

◆ wait_for() [1/3]

template<class T>
template<class Rep, class Period>
std::future_status console::Task< T >::wait_for ( const std::chrono::duration< Rep, Period > & timeout) const
inline

等待异步任务完成,最多等待指定时间。

Template Parameters
Rep时间单位的类型。
Period时间单位的精度。
Parameters
timeout等待的时间。
Returns
异步任务的状态。

◆ wait_for() [2/3]

template<class T>
std::future_status console::Task< T >::wait_for ( double seconds) const
inline

等待异步任务完成,最多等待指定时间。

Parameters
seconds等待的时间 (秒)。
Returns
异步任务的状态。

◆ wait_for() [3/3]

template<class T>
std::future_status console::Task< T >::wait_for ( Time timeout) const
inline

等待异步任务完成,最多等待指定时间。

Parameters
timeout等待的时间。
Returns
异步任务的状态。

◆ wait_until()

template<class T>
template<class Clock, class Duration>
std::future_status console::Task< T >::wait_until ( const std::chrono::time_point< Clock, Duration > & time_point) const
inline

等待异步任务完成,最多等待指定时间。

Parameters
time_point等待的时间点。
Returns
异步任务的状态。

Member Data Documentation

◆ event_

template<class T>
std::unique_ptr<Event> console::Task< T >::event_
private

事件标志

◆ future_

template<class T>
std::future<T> console::Task< T >::future_
private

任务的返回值

◆ thread_

template<class T>
std::thread console::Task< T >::thread_
private

任务执行的线程


The documentation for this class was generated from the following file: