CGraph
Public Member Functions | Private Attributes | List of all members
UAtomicQueue< T > Class Template Reference

包含一个普通队列成员,基于mutex_封装成一个原子的优先级队列, 支持原子的waitPop/tryPop/popWithTimeout/push/empty 新增ready_flag_用于通知辅助线程快速退出 More...

#include <UAtomicQueue.h>

Inheritance diagram for UAtomicQueue< T >:
Inheritance graph
[legend]
Collaboration diagram for UAtomicQueue< T >:
Collaboration graph
[legend]

Public Member Functions

 UAtomicQueue ()=default
 
CVoid waitPop (T &value)
 
CBool tryPop (T &value)
 
CBool tryPop (std::vector< T > &values, int maxPoolBatchSize)
 
std::unique_ptr< T > popWithTimeout (CMSec ms)
 
std::unique_ptr< T > tryPop ()
 
CVoid push (T &&value)
 
CBool empty ()
 
CVoid reset ()
 
CVoid setup ()
 
- Public Member Functions inherited from CObject
 CObject ()=default
 
virtual CStatus init ()
 
virtual CStatus destroy ()
 
virtual ~CObject ()=default
 

Private Attributes

std::queue< std::unique_ptr< T > > queue_ {}
 
CBool ready_flag_ { true }
 

Additional Inherited Members

- Protected Member Functions inherited from UThreadObject
CStatus run () override
 
- Protected Member Functions inherited from UtilsObject
CStatus run () override
 
- Protected Attributes inherited from UQueueObject
std::mutex mutex_
 
std::condition_variable cv_
 

Detailed Description

template<typename T>
class UAtomicQueue< T >

包含一个普通队列成员,基于mutex_封装成一个原子的优先级队列, 支持原子的waitPop/tryPop/popWithTimeout/push/empty 新增ready_flag_用于通知辅助线程快速退出

Template Parameters
T

Constructor & Destructor Documentation

◆ UAtomicQueue()

template<typename T >
UAtomicQueue< T >::UAtomicQueue ( )
default

Member Function Documentation

◆ empty()

template<typename T >
CBool UAtomicQueue< T >::empty ( )
inline

判定队列是否为空

Returns

◆ popWithTimeout()

template<typename T >
std::unique_ptr<T> UAtomicQueue< T >::popWithTimeout ( CMSec  ms)
inline

阻塞式等待弹出

Returns

◆ push()

template<typename T >
CVoid UAtomicQueue< T >::push ( T &&  value)
inline

传入数据

Parameters
value
Here is the call graph for this function:

◆ reset()

template<typename T >
CVoid UAtomicQueue< T >::reset ( )
inline

功能是通知所有的辅助线程停止工作

Returns

◆ setup()

template<typename T >
CVoid UAtomicQueue< T >::setup ( )
inline

初始化状态

Returns

◆ tryPop() [1/3]

template<typename T >
std::unique_ptr<T> UAtomicQueue< T >::tryPop ( )
inline

非阻塞式等待弹出

Returns

◆ tryPop() [2/3]

template<typename T >
CBool UAtomicQueue< T >::tryPop ( std::vector< T > &  values,
int  maxPoolBatchSize 
)
inline

尝试弹出多个任务

Parameters
values
maxPoolBatchSize
Returns

◆ tryPop() [3/3]

template<typename T >
CBool UAtomicQueue< T >::tryPop ( T &  value)
inline

尝试弹出

Parameters
value
Returns

◆ waitPop()

template<typename T >
CVoid UAtomicQueue< T >::waitPop ( T &  value)
inline

等待弹出

Parameters
value

Member Data Documentation

◆ queue_

template<typename T >
std::queue<std::unique_ptr<T> > UAtomicQueue< T >::queue_ {}
private

◆ ready_flag_

template<typename T >
CBool UAtomicQueue< T >::ready_flag_ { true }
private

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