Skip to content

ThreadPool

QY Li edited this page Apr 3, 2024 · 4 revisions

ThreadPool::Pool

线程池类,用于管理线程。

GetPool

获取线程池对象。

static Pool* GetPool() noexcept;

返回值

线程池对象指针

备注

一个程序中只能存在一个线程池对象。

AddTask

添加任务到任务队列。

template<class Func, class... Args>
auto AddTask(Func&& func, Args&&... args) -> std::shared_ptr<Task<decltype(func(args...))>>;

template<class Func, class Instance, class... Args>
auto AddTask(Func&& func, Instance&& instance, Args&&... args) -> std::shared_ptr<Task<decltype((instance->*func)(args...))>>;

参数

func 函数指针
instance 函数所属对象指针
args 函数执行所需参数

返回值

用于监控任务完成状态的 ThreadPool::Task 的共享指针,类型与 func 的返回值一致

备注

在传递成员函数时,将使用第二个重载。
此共享指针在此方法中创建,并在子线程中对指针所指变量进行更新。即使忽略该方法的返回值,该共享指针也将在子线程结束时被释放。

WaitAll

等待所有任务完成。

void WaitAll();

备注

此方法会阻塞当前线程,直到所有任务完成。

ThreadPool::Pool 构造函数

构造 ThreadPool::Pool 对象。

Pool (size_t size = 4);

参数

size 线程池中线程数量

备注

默认线程数量为4个。
一个程序中只能存在一个线程池对象,多次调用构造函数将出现异常。
线程池对象在出作用域时自动销毁。

Clone this wiki locally