NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
local_queue类 参考

线程本地任务队列 更多...

#include <thread_pool.hpp>

Public 类型

enum class  steal_strategy : uint8_t { half , fixed_batch , single , adaptive }
 任务窃取策略 更多...

Public 成员函数

NEFORCE_NODISCARD size_t capacity () const noexcept
 获取队列容量
NEFORCE_NODISCARD bool empty () const noexcept
 检查队列是否为空
NEFORCE_NODISCARD size_t remain_size () const noexcept
 获取剩余容量
NEFORCE_NODISCARD size_t size () const noexcept
 获取队列当前大小
void push_back (function< void()> task)
 推送任务到队列尾部
optional< function< void()> > try_pop ()
 从队列头部弹出任务
optional< function< void()> > be_stolen_by (local_queue &dst_queue)
 被其他队列窃取任务

静态 Public 成员函数

static void set_steal_strategy (const steal_strategy strategy, const uint32_t batch_size=4)
 设置窃取策略

静态 Public 属性

static constexpr size_t queue_size = 256
 队列容量

详细描述

线程本地任务队列

每个工作线程的本地任务队列,支持无锁的任务推送、弹出和任务窃取。 采用环形缓冲区实现,支持多种窃取策略。

在文件 thread_pool.hpp81 行定义.

成员枚举类型说明

◆ steal_strategy

enum class local_queue::steal_strategy : uint8_t
strong

任务窃取策略

枚举值
half 

窃取一半任务

fixed_batch 

窃取固定数量的任务

single 

每次只窃取一个任务

adaptive 

自适应策略

在文件 thread_pool.hpp87 行定义.

成员函数说明

◆ be_stolen_by()

optional< function< void()> > local_queue::be_stolen_by ( local_queue & dst_queue)

被其他队列窃取任务

参数
dst_queue目标队列
返回
窃取到的任务,如果窃取失败返回none

◆ capacity()

NEFORCE_NODISCARD size_t local_queue::capacity ( ) const
inlinenoexcept

获取队列容量

返回
队列最大容量

在文件 thread_pool.hpp129 行定义.

被这些函数引用 remain_size().

◆ empty()

NEFORCE_NODISCARD bool local_queue::empty ( ) const
inlinenoexcept

检查队列是否为空

返回
队列为空返回true

在文件 thread_pool.hpp135 行定义.

引用了 size().

◆ push_back()

void local_queue::push_back ( function< void()> task)
inline

推送任务到队列尾部

参数
task要推送的任务

在文件 thread_pool.hpp175 行定义.

引用了 memory_order_relaxed, memory_order_release , 以及 move().

◆ remain_size()

NEFORCE_NODISCARD size_t local_queue::remain_size ( ) const
inlinenoexcept

获取剩余容量

返回
队列剩余可用空间

在文件 thread_pool.hpp141 行定义.

引用了 capacity() , 以及 memory_order_acquire.

◆ set_steal_strategy()

void local_queue::set_steal_strategy ( const steal_strategy strategy,
const uint32_t batch_size = 4 )
inlinestatic

设置窃取策略

参数
strategy窃取策略
batch_size批次大小(仅对fixed_batch策略有效)

在文件 thread_pool.hpp166 行定义.

◆ size()

NEFORCE_NODISCARD size_t local_queue::size ( ) const
inlinenoexcept

获取队列当前大小

返回
队列中的任务数量

在文件 thread_pool.hpp154 行定义.

引用了 memory_order_acquire.

◆ try_pop()

optional< function< void()> > local_queue::try_pop ( )

从队列头部弹出任务

返回
弹出的任务,队列为空时返回none

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