CGraph
Public Member Functions | Protected Member Functions | Private Attributes | Friends | List of all members
UThreadSecondary Class Reference

和主线程UThreadPrimary不同,辅助线程没有第一第二任务队列的概念,因为辅助线程不允许窃取, 而是直接从普通任务队列(pool_task_queue_)和优先级任务队列(pool_priority_task_queue_)取任务 当然:主线程不会从优先级任务队列(pool_priority_task_queue_)取任务, 这个任务队列存储的一般是长时间任务,是辅助线程专用的 More...

#include <UThreadSecondary.h>

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

Public Member Functions

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

Protected Member Functions

CStatus init () override
 
CStatus setThreadPoolInfo (UAtomicQueue< UTask > *poolTaskQueue, UAtomicPriorityQueue< UTask > *poolPriorityTaskQueue, UThreadPoolConfigPtr config)
 
CStatus run () final
 
CVoid processTask () override
 
CVoid processTasks () override
 
CVoid waitRunTask (CMSec ms)
 
bool freeze ()
 
- Protected Member Functions inherited from UThreadBase
 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 ()
 
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
 

Private Attributes

CSec cur_ttl_ = 0
 

Friends

class UThreadPool
 

Additional Inherited Members

- Protected Attributes inherited from UThreadBase
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_
 

Detailed Description

和主线程UThreadPrimary不同,辅助线程没有第一第二任务队列的概念,因为辅助线程不允许窃取, 而是直接从普通任务队列(pool_task_queue_)和优先级任务队列(pool_priority_task_queue_)取任务 当然:主线程不会从优先级任务队列(pool_priority_task_queue_)取任务, 这个任务队列存储的一般是长时间任务,是辅助线程专用的

Constructor & Destructor Documentation

◆ UThreadSecondary()

UThreadSecondary::UThreadSecondary ( )
inlineexplicit

Member Function Documentation

◆ freeze()

bool UThreadSecondary::freeze ( )
inlineprotected

判断本线程是否需要被自动释放

Returns

◆ init()

CStatus UThreadSecondary::init ( )
inlineoverrideprotectedvirtual

初始化函数

Reimplemented from CObject.

Here is the call graph for this function:

◆ processTask()

CVoid UThreadSecondary::processTask ( )
inlineoverrideprotectedvirtual

执行单个消息

Returns

Implements UThreadBase.

Here is the call graph for this function:

◆ processTasks()

CVoid UThreadSecondary::processTasks ( )
inlineoverrideprotectedvirtual

获取批量执行task信息

Implements UThreadBase.

Here is the call graph for this function:

◆ run()

CStatus UThreadSecondary::run ( )
inlinefinalprotectedvirtual

流程处理函数

Implements CObject.

Here is the call graph for this function:

◆ setThreadPoolInfo()

CStatus UThreadSecondary::setThreadPoolInfo ( UAtomicQueue< UTask > *  poolTaskQueue,
UAtomicPriorityQueue< UTask > *  poolPriorityTaskQueue,
UThreadPoolConfigPtr  config 
)
inlineprotected

设置pool的信息

Parameters
poolTaskQueue
poolPriorityTaskQueue
config
Returns

◆ waitRunTask()

CVoid UThreadSecondary::waitRunTask ( CMSec  ms)
inlineprotected

有等待的执行任务

Parameters
ms
Returns
@notice 目的是降低cpu的占用率
Here is the call graph for this function:

Friends And Related Function Documentation

◆ UThreadPool

friend class UThreadPool
friend

Member Data Documentation

◆ cur_ttl_

CSec UThreadSecondary::cur_ttl_ = 0
private

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