|
Console Library 8.0.0
A header-only library that makes C++ simple
|
多队列版本的 LFQueue,将数据分布到多个独立的 LFQueue 中以提高并发性能。 More...
#include <queue.h>
Public Member Functions | |
| MultiLFQueue (size_t num_queues=1) | |
| 构造函数,初始化指定数量的子队列。 | |
| template<class... Args> | |
| auto | push (Args &&...args) -> decltype(queues_[_index()]->push(std::forward< Args >(args)...)) |
| 将数据推送到队列中。 | |
| bool | pop (T &output) |
| 从队列中弹出数据。 | |
| std::unique_ptr< T > | pop () |
| 从队列中弹出数据,并返回一个独占所有权的 std::unique_ptr。 | |
| template<class Iterator> | |
| size_t | pop (Iterator output, size_t count) |
| 从队列中弹出大批数据,写入输入迭代器。 | |
| template<class Iterator> | |
| size_t | pop (Iterator begin, Iterator end) |
| 从队列中弹出数据大批数据,写入输出迭代器。 | |
| std::vector< T > | pop (size_t count) |
| 从队列中弹出数据大批数据,返回包含弹出结果的 vector。 | |
Private Member Functions | |
| size_t | _index () |
| 获取当前线程的索引,用于推送时的负载均衡。 | |
| template<class OtherIterator, class IteratorTag> | |
| void | _advance (OtherIterator &it, size_t n, IteratorTag) |
| 类似标准库的 advance。 | |
| template<class RandomAccessIterator> | |
| void | _advance (RandomAccessIterator &it, size_t n, std::random_access_iterator_tag) |
| 类似标准库的 advance。 | |
| template<class Iterator> | |
| void | _advance (Iterator &it, size_t n) |
| 类似标准库的 advance。 | |
Private Attributes | |
| std::vector< std::unique_ptr< console::LFQueue< T, Alloc > > > | queues_ |
| 子队列集合,每个子队列用于存储不同线程的队列数据。 | |
| std::atomic< size_t > | round_robin_ {0} |
| 轮询计数器,用于弹出时的负载均衡。 | |
| std::atomic< size_t > | nth_ {0} |
| 序号计数器,用于推送时的线程索引分配。 | |
多队列版本的 LFQueue,将数据分布到多个独立的 LFQueue 中以提高并发性能。
| T | 队列中元素的类型。 |
| Alloc | 分配器类型,默认为 std::allocator<T>。 |
| RobinTimes | pop 轮询次数,默认为 2。 |
|
inline |
构造函数,初始化指定数量的子队列。
| num_queues | 子队列的数量。 |
|
inlineprivate |
类似标准库的 advance。
|
inlineprivate |
类似标准库的 advance。
|
inlineprivate |
类似标准库的 advance。
|
inlineprivate |
获取当前线程的索引,用于推送时的负载均衡。
|
inline |
从队列中弹出数据,并返回一个独占所有权的 std::unique_ptr。
|
inline |
从队列中弹出数据大批数据,写入输出迭代器。
| begin | 输出迭代器的起始位置,用于写入弹出的数据。 |
| end | 输出迭代器的结束位置。 |
|
inline |
从队列中弹出大批数据,写入输入迭代器。
| output | 输出迭代器,用于存储弹出的数据。 |
| count | 要弹出的数据数量。 |
|
inline |
从队列中弹出数据大批数据,返回包含弹出结果的 vector。
| count | 要弹出的数据数量。 |
|
inline |
从队列中弹出数据。
| output | 弹出的数据将存储在此处。 |
|
inline |
将数据推送到队列中。
| Args | 参数类型包,支持 const T&、T&& 以及批量迭代器形式。 |
| args | 要推送的数据参数,转发给子队列的 push 方法。 |
|
private |
序号计数器,用于推送时的线程索引分配。
|
private |
子队列集合,每个子队列用于存储不同线程的队列数据。
|
private |
轮询计数器,用于弹出时的负载均衡。