Sese Framework  x.y.z
A cross-platform framework
载入中...
搜索中...
未找到
sese::ThreadPool类 参考

线程池类 更多...

#include <ThreadPool.h>

类 sese::ThreadPool 继承关系图:
sese::Noncopyable

struct  RuntimeData
 线程池运行数据 更多...
 

Public 类型

using Ptr = std::unique_ptr<ThreadPool>
 

Public 成员函数

 ThreadPool (std::string thread_pool_name=THREAD_DEFAULT_NAME, size_t threads=4)
 
 ~ThreadPool () override
 
void postTask (const std::function< void()> &task)
 
void postTask (const std::vector< std::function< void()> > &tasks)
 
template<typename FUNCTION , typename... ARGS>
void postTaskEx (FUNCTION &&f, ARGS &&...args)
 
template<class RETURN_TYPE >
std::shared_future< RETURN_TYPE > postTask (const std::function< RETURN_TYPE()> &tasks)
 
void shutdown ()
 关闭当前线程池并阻塞至子线程退出
 
size_t size () noexcept
 
bool empty () noexcept
 
const std::string & getName () const
 
size_t getThreads () const
 
- Public 成员函数 继承自 sese::Noncopyable
 Noncopyable ()=default
 
virtual ~Noncopyable ()=default
 
 Noncopyable (const Noncopyable &)=delete
 删除拷贝相关构造函数
 
Noncopyableoperator= (const Noncopyable &)=delete
 删除拷贝相关构造函数
 

Private 属性

std::string name
 
size_t threads = 0
 
std::vector< Thread * > threadGroup
 
std::shared_ptr< RuntimeDatadata
 

详细描述

线程池类

成员类型定义说明

◆ Ptr

using sese::ThreadPool::Ptr = std::unique_ptr<ThreadPool>

构造及析构函数说明

◆ ThreadPool()

sese::ThreadPool::ThreadPool ( std::string thread_pool_name = THREAD_DEFAULT_NAME,
size_t threads = 4 )
explicit

初始化线程池

参数
thread_pool_name线程池名称(影响池内线程名称)
threads线程数量

引用了 data, name, threadGroup , 以及 threads.

◆ ~ThreadPool()

sese::ThreadPool::~ThreadPool ( )
override

引用了 data , 以及 shutdown().

成员函数说明

◆ empty()

bool sese::ThreadPool::empty ( )
nodiscardnoexcept

引用了 data.

◆ getName()

const std::string & sese::ThreadPool::getName ( ) const
inlinenodiscard

引用了 name.

◆ getThreads()

size_t sese::ThreadPool::getThreads ( ) const
inlinenodiscard

引用了 threads.

◆ postTask() [1/3]

template<class RETURN_TYPE >
std::shared_future< RETURN_TYPE > sese::ThreadPool::postTask ( const std::function< RETURN_TYPE()> & tasks)

向线程池添加有返回值的任务

模板参数
RETURN_TYPE返回值类型
参数
tasks欲执行的任务
返回
std::shared_future 对象

注意: 由于 std::packaged_task 属于不可拷贝对象, 并且 std::function 会对参数类型进行擦除,导致 std::move 也无法作用于不可拷贝对象, 所以此处选择了使用 std::shared_ptr 对 std::packaged_task 进行封装

引用了 postTask().

◆ postTask() [2/3]

void sese::ThreadPool::postTask ( const std::function< void()> & task)

向线程池添加单个任务

参数
task欲执行的任务

引用了 data.

被这些函数引用 sese::async(), postTask() , 以及 postTaskEx().

◆ postTask() [3/3]

void sese::ThreadPool::postTask ( const std::vector< std::function< void()> > & tasks)

向线程池批量添加任务

参数
tasks欲执行的任务集合

引用了 data.

◆ postTaskEx()

template<typename FUNCTION , typename... ARGS>
void sese::ThreadPool::postTaskEx ( FUNCTION && f,
ARGS &&... args )
inline

向线程池添加任务并绑定参数

模板参数
FUNCTION函数模板
ARGS参数模板
参数
f函数
args参数

引用了 f , 以及 postTask().

◆ shutdown()

void sese::ThreadPool::shutdown ( )

关闭当前线程池并阻塞至子线程退出

引用了 data , 以及 threadGroup.

被这些函数引用 ~ThreadPool().

◆ size()

size_t sese::ThreadPool::size ( )
nodiscardnoexcept

引用了 data.

类成员变量说明

◆ data

std::shared_ptr<RuntimeData> sese::ThreadPool::data
private

◆ name

std::string sese::ThreadPool::name
private

被这些函数引用 getName() , 以及 ThreadPool().

◆ threadGroup

std::vector<Thread *> sese::ThreadPool::threadGroup
private

被这些函数引用 shutdown() , 以及 ThreadPool().

◆ threads

size_t sese::ThreadPool::threads = 0
private

被这些函数引用 getThreads() , 以及 ThreadPool().


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