19#include "common/queue/queue.h"
20#include "common/thread/runnable.h"
21#include "common/lang/mutex.h"
22#include "common/lang/atomic.h"
23#include "common/lang/memory.h"
24#include "common/lang/map.h"
25#include "common/lang/chrono.h"
26#include "common/lang/thread.h"
57 int init(
const char *name,
int core_size,
int max_size,
long keep_alive_time_ms);
68 int init(
const char *name,
int core_pool_size,
int max_pool_size,
long keep_alive_time_ms,
69 unique_ptr<
Queue<unique_ptr<Runnable>>> &&work_queue);
77 int execute(unique_ptr<Runnable> &&task);
85 int execute(
const function<
void()> &callable);
161 bool core_thread =
false;
168 State state_ = State::NEW;
任务队列接口
Definition: queue.h:31
Definition: thread_pool_executor.h:44
int pool_size() const
线程池中线程个数
Definition: thread_pool_executor.h:108
int core_pool_size() const
核心线程个数
Definition: thread_pool_executor.h:104
unique_ptr< Queue< unique_ptr< Runnable > > > work_queue_
非核心线程空闲多久后退出
Definition: thread_pool_executor.h:174
mutex lock_
任务队列
Definition: thread_pool_executor.h:176
int active_count() const
当前活跃线程的个数,就是正在处理任务的线程个数
Definition: thread_pool_executor.h:100
int extend_thread()
检测是否需要扩展线程,如果需要就扩展
Definition: thread_pool_executor.cpp:204
int64_t task_count() const
处理过的任务个数
Definition: thread_pool_executor.h:116
map< thread::id, ThreadData > threads_
保护线程池内部数据的锁
Definition: thread_pool_executor.h:177
int max_pool_size_
核心线程个数
Definition: thread_pool_executor.h:171
int create_thread(bool core_thread)
创建一个线程
Definition: thread_pool_executor.cpp:177
void thread_func()
线程函数。从队列中拉任务并执行
Definition: thread_pool_executor.cpp:116
int shutdown()
关闭线程池
Definition: thread_pool_executor.cpp:73
int await_termination()
等待线程池处理完所有任务并退出
Definition: thread_pool_executor.cpp:104
int execute(unique_ptr< Runnable > &&task)
提交一个任务,不一定可以立即执行
Definition: thread_pool_executor.cpp:89
atomic< int > active_count_
处理过的任务个数
Definition: thread_pool_executor.h:181
chrono::milliseconds keep_alive_time_ms_
最大线程个数
Definition: thread_pool_executor.h:172
int largest_pool_size_
线程列表
Definition: thread_pool_executor.h:179
int create_thread_locked(bool core_thread)
创建一个线程。调用此函数前已经加锁
Definition: thread_pool_executor.cpp:183
string pool_name_
活跃线程个数
Definition: thread_pool_executor.h:182
int largest_pool_size() const
曾经达到过的最大线程个数
Definition: thread_pool_executor.h:112
State
线程池的状态
Definition: thread_pool_executor.h:152
atomic< int64_t > task_count_
历史上达到的最大的线程个数
Definition: thread_pool_executor.h:180
int core_pool_size_
线程池状态
Definition: thread_pool_executor.h:170
int64_t queue_size() const
任务队列中的任务个数
Definition: thread_pool_executor.h:121
int init(const char *name, int core_size, int max_size, long keep_alive_time_ms)
初始化线程池
Definition: thread_pool_executor.cpp:26
Definition: thread_pool_executor.h:160
thread * thread_ptr
是否已经退出
Definition: thread_pool_executor.h:164
bool terminated
是否空闲
Definition: thread_pool_executor.h:163
bool idle
是否是核心线程
Definition: thread_pool_executor.h:162