Sese Framework
x.y.z
A cross-platform framework
|
线程池类 更多...
#include <ThreadPool.h>
类 | |
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 | |
删除拷贝相关构造函数 | |
Noncopyable & | operator= (const Noncopyable &)=delete |
删除拷贝相关构造函数 | |
Private 属性 | |
std::string | name |
size_t | threads = 0 |
std::vector< Thread * > | threadGroup |
std::shared_ptr< RuntimeData > | data |
线程池类
using sese::ThreadPool::Ptr = std::unique_ptr<ThreadPool> |
|
explicit |
|
override |
引用了 data , 以及 shutdown().
|
nodiscardnoexcept |
引用了 data.
|
inlinenodiscard |
引用了 name.
|
inlinenodiscard |
引用了 threads.
std::shared_future< RETURN_TYPE > sese::ThreadPool::postTask | ( | const std::function< RETURN_TYPE()> & | tasks | ) |
向线程池添加有返回值的任务
RETURN_TYPE | 返回值类型 |
tasks | 欲执行的任务 |
注意: 由于 std::packaged_task 属于不可拷贝对象, 并且 std::function 会对参数类型进行擦除,导致 std::move 也无法作用于不可拷贝对象, 所以此处选择了使用 std::shared_ptr 对 std::packaged_task 进行封装
引用了 postTask().
void sese::ThreadPool::postTask | ( | const std::function< void()> & | task | ) |
void sese::ThreadPool::postTask | ( | const std::vector< std::function< void()> > & | tasks | ) |
|
inline |
void sese::ThreadPool::shutdown | ( | ) |
|
nodiscardnoexcept |
引用了 data.
|
private |
被这些函数引用 empty(), postTask(), postTask(), shutdown(), size(), ThreadPool() , 以及 ~ThreadPool().
|
private |
被这些函数引用 getName() , 以及 ThreadPool().
|
private |
被这些函数引用 shutdown() , 以及 ThreadPool().
|
private |
被这些函数引用 getThreads() , 以及 ThreadPool().