Console Library 8.0.0
A header-only library that makes C++ simple
Loading...
Searching...
No Matches
console::Thread Class Reference

线程类,封装了 std::thread 和 Event 类。 More...

#include <thread.h>

Public Member Functions

 Thread ()=default
 默认构造函数,创建线程对象但不启动线程。
template<class F, class... Args>
 Thread (F &&f, Args &&...args)
 构造函数,创建线程对象并启动线程。
 ~Thread ()
 析构函数,设置事件标志并等待线程结束。
void join ()
 等待线程结束。
void detach ()
 分离线程。
void stop ()
 停止线程。
bool joinable () const
 判断线程是否可连接。
std::thread::id get_id () const
 获取线程ID。
auto native_handle () -> decltype(thread_.native_handle())
 获取线程的原生句柄。
 Thread (const Thread &)=delete
 禁止拷贝构造。
Thread & operator= (const Thread &)=delete
 禁止拷贝赋值。
 Thread (Thread &&t)
 移动构造。
Thread & operator= (Thread &&t) noexcept
 移动赋值。
void swap (Thread &t) noexcept
 交换线程对象。

Private Member Functions

template<class F, class... Args>
std::thread make_thread (std::true_type, F &&f, Args &&...args)
 true_type分支,用于处理带有const Event &参数的可调用对象。
template<class F, class... Args>
std::thread make_thread (std::false_type, F &&f, Args &&...args)
 false_type分支,用于处理不带const Event &参数的可调用对象。

Private Attributes

std::unique_ptr< Event > event_
 指向事件标志的指针
std::thread thread_
 线程对象

Friends

void swap (Thread &lhs, Thread &rhs) noexcept
 交换两个线程对象。

Detailed Description

线程类,封装了 std::thread 和 Event 类。

提供了线程的启动、停止和等待操作,以及事件标志的设置和检查。

Constructor & Destructor Documentation

◆ Thread() [1/4]

console::Thread::Thread ( )
default

默认构造函数,创建线程对象但不启动线程。

Note
稍后可以通过赋值启动任务。

◆ Thread() [2/4]

template<class F, class... Args>
console::Thread::Thread ( F && f,
Args &&... args )
inline

构造函数,创建线程对象并启动线程。

Template Parameters
F可调用对象类型。
Args可调用对象的参数类型。
Parameters
f可调用对象。
args可调用对象的参数。
Note
通过标签分发,如果首个参数为const Event &, 分发至true_type分支,否则分发至false_type分支。

◆ ~Thread()

console::Thread::~Thread ( )
inline

析构函数,设置事件标志并等待线程结束。

◆ Thread() [3/4]

console::Thread::Thread ( const Thread & )
delete

禁止拷贝构造。

◆ Thread() [4/4]

console::Thread::Thread ( Thread && t)
inline

移动构造。

Parameters
t要移动的线程对象。

Member Function Documentation

◆ detach()

void console::Thread::detach ( )
inline

分离线程。

◆ get_id()

std::thread::id console::Thread::get_id ( ) const
inline

获取线程ID。

◆ join()

void console::Thread::join ( )
inline

等待线程结束。

◆ joinable()

bool console::Thread::joinable ( ) const
inline

判断线程是否可连接。

◆ make_thread() [1/2]

template<class F, class... Args>
std::thread console::Thread::make_thread ( std::false_type ,
F && f,
Args &&... args )
inlineprivate

false_type分支,用于处理不带const Event &参数的可调用对象。

Template Parameters
F可调用对象类型。
Args可调用对象的参数类型。
Parameters
f可调用对象。
args可调用对象的参数。
Returns
新创建的线程对象。

◆ make_thread() [2/2]

template<class F, class... Args>
std::thread console::Thread::make_thread ( std::true_type ,
F && f,
Args &&... args )
inlineprivate

true_type分支,用于处理带有const Event &参数的可调用对象。

Template Parameters
F可调用对象类型。
Args可调用对象的参数类型。
Parameters
f可调用对象。
args可调用对象的参数。
Returns
新创建的线程对象。

◆ native_handle()

auto console::Thread::native_handle ( ) -> decltype(thread_.native_handle())
inline

获取线程的原生句柄。

◆ operator=() [1/2]

Thread & console::Thread::operator= ( const Thread & )
delete

禁止拷贝赋值。

◆ operator=() [2/2]

Thread & console::Thread::operator= ( Thread && t)
inlinenoexcept

移动赋值。

Parameters
t要移动的线程对象。
Returns
移动后的线程对象。

◆ stop()

void console::Thread::stop ( )
inline

停止线程。

◆ swap()

void console::Thread::swap ( Thread & t)
inlinenoexcept

交换线程对象。

Parameters
t要交换的线程对象。

◆ swap

void swap ( Thread & lhs,
Thread & rhs )
friend

交换两个线程对象。

Parameters
lhs要交换的线程对象。
rhs要交换的线程对象。

Member Data Documentation

◆ event_

std::unique_ptr<Event> console::Thread::event_
private

指向事件标志的指针

◆ thread_

std::thread console::Thread::thread_
private

线程对象


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