LogSystem beta 1.4
This is a logging system project
 
载入中...
搜索中...
未找到
XuServer::threadpool类 参考

线程池类 更多...

#include <threadpool.hpp>

Public 类型

using ptr = std::unique_ptr< threadpool >
 线程池操作句柄
 
using Functor = std::function< void(void)>
 线程池回调函数
 

Public 成员函数

 threadpool (int thr_count=1)
 构造函数
 
 ~threadpool ()
 析构函数
 
void stop ()
 停止所有线程
 
template<typename F , typename... Args>
auto push (F &&func, Args &&...args) -> std::future< decltype(func(args...))>
 传入任务函数到任务池
 

Private 成员函数

void entry ()
 线程入口函数 从任务池中取出任务执行
 

Private 属性

std::atomic< bool > _stop
 原子类型的停止标志
 
std::vector< Functor_taskpool
 任务池
 
std::mutex _mutex
 互斥锁
 
std::condition_variable _cv
 条件变量
 
std::vector< std::thread > _threads
 管理线程
 

详细描述

线程池类

成员类型定义说明

◆ Functor

using XuServer::threadpool::Functor = std::function<void(void)>

线程池回调函数

◆ ptr

using XuServer::threadpool::ptr = std::unique_ptr<threadpool>

线程池操作句柄

构造及析构函数说明

◆ threadpool()

XuServer::threadpool::threadpool ( int  thr_count = 1)
inline

构造函数

参数
thr_count线程数量
函数调用图:

◆ ~threadpool()

XuServer::threadpool::~threadpool ( )
inline

析构函数

函数调用图:

成员函数说明

◆ entry()

void XuServer::threadpool::entry ( )
inlineprivate

线程入口函数 从任务池中取出任务执行

这是这个函数的调用关系图:

◆ push()

template<typename F , typename... Args>
auto XuServer::threadpool::push ( F &&  func,
Args &&...  args 
) -> std::future<decltype(func(args...))>
inline

传入任务函数到任务池

模板参数
F任务函数类型
...Args任务函数参数包类型
参数
func任务函数
...args任务函数参数包
返回
自动推导任务函数返回值类型

◆ stop()

void XuServer::threadpool::stop ( )
inline

停止所有线程

这是这个函数的调用关系图:

类成员变量说明

◆ _cv

std::condition_variable XuServer::threadpool::_cv
private

条件变量

◆ _mutex

std::mutex XuServer::threadpool::_mutex
private

互斥锁

◆ _stop

std::atomic<bool> XuServer::threadpool::_stop
private

原子类型的停止标志

◆ _taskpool

std::vector<Functor> XuServer::threadpool::_taskpool
private

任务池

◆ _threads

std::vector<std::thread> XuServer::threadpool::_threads
private

管理线程