CGraph
Protected Member Functions | Protected Attributes | Static Private Member Functions | List of all members
UThreadBase Class Referenceabstract

线程池中实际使用的线程的基类,有以下关键成员: UAtomicQueue<UTask>* pool_task_queue_:存储当前线程待执行的普通任务; UAtomicPriorityQueue<UTask>* pool_priority_task_queue_:优先级队列的任务,仅辅助线程可以执行; CInt type_:表明当前线程是普通线程还是辅助线程 UThreadPoolConfigPtr config_:当前线程所属的线程池的配置 std::thread thread_:标准线程对象,实际执行UTask任务的载体 More...

#include <UThreadBase.h>

Inheritance diagram for UThreadBase:
Inheritance graph
[legend]
Collaboration diagram for UThreadBase:
Collaboration graph
[legend]

Protected Member Functions

 UThreadBase ()
 
 ~UThreadBase () override
 
CStatus destroy () override
 
virtual CBool popPoolTask (UTaskRef task)
 
virtual CBool popPoolTask (UTaskArrRef tasks)
 
CVoid runTask (UTask &task)
 
CVoid runTasks (UTaskArr &tasks)
 
CVoid reset ()
 
virtual CVoid processTask ()=0
 
virtual CVoid processTasks ()=0
 
CVoid loopProcess ()
 
CVoid setSchedParam ()
 
CVoid setAffinity (int index)
 
- Protected Member Functions inherited from UThreadObject
CStatus run () override
 
- Protected Member Functions inherited from UtilsObject
CStatus run () override
 

Protected Attributes

CBool done_
 
CBool is_init_
 
CBool is_running_
 
CInt type_ = 0
 
CULong total_task_num_ = 0
 
UAtomicQueue< UTask > * pool_task_queue_
 
UAtomicPriorityQueue< UTask > * pool_priority_task_queue_
 
UThreadPoolConfigPtr config_ = nullptr
 
UMetrics metrics_
 
std::thread thread_
 
std::mutex mutex_
 
std::condition_variable cv_
 

Static Private Member Functions

static CInt calcPolicy (int policy)
 
static CInt calcPriority (int priority)
 

Additional Inherited Members

- Public Member Functions inherited from CObject
 CObject ()=default
 
virtual CStatus init ()
 
virtual ~CObject ()=default
 

Detailed Description

线程池中实际使用的线程的基类,有以下关键成员: UAtomicQueue<UTask>* pool_task_queue_:存储当前线程待执行的普通任务; UAtomicPriorityQueue<UTask>* pool_priority_task_queue_:优先级队列的任务,仅辅助线程可以执行; CInt type_:表明当前线程是普通线程还是辅助线程 UThreadPoolConfigPtr config_:当前线程所属的线程池的配置 std::thread thread_:标准线程对象,实际执行UTask任务的载体

Constructor & Destructor Documentation

◆ UThreadBase()

UThreadBase::UThreadBase ( )
inlineexplicitprotected

◆ ~UThreadBase()

UThreadBase::~UThreadBase ( )
inlineoverrideprotected
Here is the call graph for this function:

Member Function Documentation

◆ calcPolicy()

static CInt UThreadBase::calcPolicy ( int  policy)
inlinestaticprivate

设定计算线程调度策略信息, 非OTHER/RR/FIFO对应数值,统一返回OTHER类型

Parameters
policy
Returns

◆ calcPriority()

static CInt UThreadBase::calcPriority ( int  priority)
inlinestaticprivate

设定线程优先级信息 超过[min,max]范围,统一设置为min值

Parameters
priority
Returns

◆ destroy()

CStatus UThreadBase::destroy ( )
inlineoverrideprotectedvirtual

释放函数

Reimplemented from CObject.

Here is the call graph for this function:

◆ loopProcess()

CVoid UThreadBase::loopProcess ( )
inlineprotected

循环处理任务

Returns
Here is the call graph for this function:

◆ popPoolTask() [1/2]

virtual CBool UThreadBase::popPoolTask ( UTaskArrRef  tasks)
inlineprotectedvirtual

从线程池的队列中中,按照指定的max_pool_batch_size_获取批量任务

Parameters
tasks
Returns
Here is the call graph for this function:

◆ popPoolTask() [2/2]

virtual CBool UThreadBase::popPoolTask ( UTaskRef  task)
inlineprotectedvirtual

从线程池的队列中,获取任务

Parameters
task
Returns
Here is the call graph for this function:

◆ processTask()

virtual CVoid UThreadBase::processTask ( )
protectedpure virtual

执行单个消息

Returns

Implemented in UThreadSecondary, and UThreadPrimary.

◆ processTasks()

virtual CVoid UThreadBase::processTasks ( )
protectedpure virtual

获取批量执行task信息

Implemented in UThreadSecondary, and UThreadPrimary.

◆ reset()

CVoid UThreadBase::reset ( )
inlineprotected

清空所有任务内容

◆ runTask()

CVoid UThreadBase::runTask ( UTask task)
inlineprotected

执行单个任务

Parameters
task

◆ runTasks()

CVoid UThreadBase::runTasks ( UTaskArr tasks)
inlineprotected

批量执行任务

Parameters
tasks

◆ setAffinity()

CVoid UThreadBase::setAffinity ( int  index)
inlineprotected

设置线程亲和性,仅针对linux系统

Here is the call graph for this function:

◆ setSchedParam()

CVoid UThreadBase::setSchedParam ( )
inlineprotected

设置线程优先级,仅针对非windows平台使用

Here is the call graph for this function:

Member Data Documentation

◆ config_

UThreadPoolConfigPtr UThreadBase::config_ = nullptr
protected

◆ cv_

std::condition_variable UThreadBase::cv_
protected

◆ done_

CBool UThreadBase::done_
protected

◆ is_init_

CBool UThreadBase::is_init_
protected

◆ is_running_

CBool UThreadBase::is_running_
protected

◆ metrics_

UMetrics UThreadBase::metrics_
protected

◆ mutex_

std::mutex UThreadBase::mutex_
protected

◆ pool_priority_task_queue_

UAtomicPriorityQueue<UTask>* UThreadBase::pool_priority_task_queue_
protected

◆ pool_task_queue_

UAtomicQueue<UTask>* UThreadBase::pool_task_queue_
protected

◆ thread_

std::thread UThreadBase::thread_
protected

◆ total_task_num_

CULong UThreadBase::total_task_num_ = 0
protected

◆ type_

CInt UThreadBase::type_ = 0
protected

The documentation for this class was generated from the following file: