STTNet
 全部  命名空间 文件 函数 变量 类型定义 枚举 枚举值 宏定义 
| Public 成员函数 | 所有成员列表
stt::system::MPSCQueue< T > 模板类 参考

Lock-free bounded MPSC queue (Multi-Producer Single-Consumer) 无锁有界多生产者单消费者队列(环形缓冲) 更多...

#include <sttnet.h>

Public 成员函数

 MPSCQueue (std::size_t capacity_pow2)
 
 MPSCQueue (const MPSCQueue &)=delete
 
MPSCQueueoperator= (const MPSCQueue &)=delete
 
 ~MPSCQueue ()
 
bool push (T &&v) noexcept(std::is_nothrow_move_constructible_v< T >)
 Try push (non-blocking). Returns false if queue is full. 尝试入队(非阻塞),队列满则返回 false. 更多...
 
bool push (const T &v) noexcept(std::is_nothrow_copy_constructible_v< T >)
 
bool pop (T &out) noexcept(std::is_nothrow_move_assignable_v< T > &&std::is_nothrow_move_constructible_v< T >)
 Try pop (single consumer). Returns false if empty. 尝试出队(单消费者),空则返回 false. 更多...
 
std::size_t approx_size () const noexcept
 Approximate size (may be inaccurate under concurrency) 近似长度(并发下可能不精确) 更多...
 

详细描述

template<typename T>
class stt::system::MPSCQueue< T >

Lock-free bounded MPSC queue (Multi-Producer Single-Consumer) 无锁有界多生产者单消费者队列(环形缓冲)

Design:

特点:

IMPORTANT: ❗ Capacity must be a power of two. ❗ pop() must be called by only one thread.

重要: ❗ 容量必须是 2 的幂 ❗ pop 只能由一个线程调用

构造及析构函数说明

template<typename T>
stt::system::MPSCQueue< T >::MPSCQueue ( std::size_t  capacity_pow2)
inlineexplicit
template<typename T>
stt::system::MPSCQueue< T >::MPSCQueue ( const MPSCQueue< T > &  )
delete
template<typename T>
stt::system::MPSCQueue< T >::~MPSCQueue ( )
inline

成员函数说明

template<typename T>
std::size_t stt::system::MPSCQueue< T >::approx_size ( ) const
inlinenoexcept

Approximate size (may be inaccurate under concurrency) 近似长度(并发下可能不精确)

template<typename T>
MPSCQueue& stt::system::MPSCQueue< T >::operator= ( const MPSCQueue< T > &  )
delete
template<typename T>
bool stt::system::MPSCQueue< T >::pop ( T &  out)
inlinenoexcept

Try pop (single consumer). Returns false if empty. 尝试出队(单消费者),空则返回 false.

template<typename T>
bool stt::system::MPSCQueue< T >::push ( T &&  v)
inlinenoexcept

Try push (non-blocking). Returns false if queue is full. 尝试入队(非阻塞),队列满则返回 false.

template<typename T>
bool stt::system::MPSCQueue< T >::push ( const T &  v)
inlinenoexcept

该类的文档由以下文件生成: