NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
lazy_thread类 参考

延迟启动线程类 更多...

#include <lazy_thread.hpp>

Public 类型

using id = thread::id
 线程ID类型
using native_handle_type = thread::native_handle_type
 原生句柄类型

Public 成员函数

 lazy_thread () noexcept=default
 默认构造函数
template<typename F, typename... Args>
 lazy_thread (F &&f, Args &&... args)
 构造函数
 lazy_thread (lazy_thread &&other) noexcept
 移动构造函数
lazy_threadoperator= (lazy_thread &&other) noexcept
 移动赋值运算符
 ~lazy_thread ()
 析构函数
void start ()
 启动线程
bool joinable () const noexcept
 检查线程是否可被等待
void join ()
 等待线程结束
void detach ()
 分离线程
thread::id get_id () const noexcept
 获取线程标识符
void swap (lazy_thread &other) noexcept
 交换两个延迟线程对象

详细描述

延迟启动线程类

允许创建线程对象时仅存储可调用对象,而不立即创建和执行线程。 线程的实际创建由start()方法触发。

使用场景:

  • 需要将线程作为对象存储,但执行时机未定
  • 需要在不同作用域间传递线程任务
  • 需要在某些条件满足后才启动线程
  • 避免不必要的线程创建开销
注解
lazy_thread在析构时会自动join而不是terminate。

在文件 lazy_thread.hpp42 行定义.

构造及析构函数说明

◆ lazy_thread() [1/2]

template<typename F, typename... Args>
lazy_thread::lazy_thread ( F && f,
Args &&... args )
inlineexplicit

构造函数

模板参数
F可调用对象类型
Args参数类型
参数
f要执行的可调用对象
args传递给可调用对象的参数

创建延迟线程对象,存储可调用对象和参数,但不立即启动线程。

在文件 lazy_thread.hpp67 行定义.

引用了 apply(), forward(), lazy_thread(), make_tuple() , 以及 move().

◆ lazy_thread() [2/2]

lazy_thread::lazy_thread ( lazy_thread && other)
noexcept

移动构造函数

参数
other要移动的延迟线程对象

转移任务和线程的所有权,other变为空状态。

引用了 lazy_thread().

◆ ~lazy_thread()

lazy_thread::~lazy_thread ( )

析构函数

如果线程已启动且仍可连接,会等待其完成。

成员函数说明

◆ detach()

void lazy_thread::detach ( )
inline

分离线程

异常
thread_exception如果线程不可被等待或分离失败

使线程在后台独立运行,线程结束后自动释放资源。

在文件 lazy_thread.hpp129 行定义.

◆ get_id()

thread::id lazy_thread::get_id ( ) const
inlinenoexcept

获取线程标识符

返回
线程标识符

在文件 lazy_thread.hpp135 行定义.

◆ join()

void lazy_thread::join ( )
inline

等待线程结束

异常
thread_exception如果线程不可被等待或等待失败

阻塞当前线程,直到目标线程执行完毕。

在文件 lazy_thread.hpp121 行定义.

◆ joinable()

bool lazy_thread::joinable ( ) const
inlinenoexcept

检查线程是否可被等待

返回
线程已启动且尚未被等待或分离时返回true

在文件 lazy_thread.hpp113 行定义.

◆ operator=()

lazy_thread & lazy_thread::operator= ( lazy_thread && other)
noexcept

移动赋值运算符

参数
other要移动的延迟线程对象
返回
自身引用

如果当前对象已有线程且可连接,会等待其完成后再转移所有权。

引用了 lazy_thread().

◆ start()

void lazy_thread::start ( )

启动线程

异常
thread_exception没有可调用对象或线程已启动时抛出

创建实际线程并执行存储的任务。 只能调用一次,调用后线程立即开始执行。

◆ swap()

void lazy_thread::swap ( lazy_thread & other)
inlinenoexcept

交换两个延迟线程对象

参数
other要交换的对象

在文件 lazy_thread.hpp141 行定义.

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


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