ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
ngl::tools::nwork< T > Class Template Reference

单消费者工作队列。 More...

#include <tools_nwork.h>

Public Member Functions

 nwork (const std::function< void(T &)> &afun)
 构造函数,启动工作线程。
 ~nwork ()
 析构函数。
void run (std::stop_token astop)
 工作线程主循环。
void push_back (std::shared_ptr< T > &anode)
 向队列提交一个任务。

Static Public Member Functions

template<typename ... ARGS>
static std::shared_ptr< T > make_shared (ARGS &... args)
 创建任务对象的共享指针。

Detailed Description

template<typename T>
class ngl::tools::nwork< T >

单消费者工作队列。

内部维护一个任务队列和一个工作线程。外部通过push_back()提交任务, 工作线程在信号量驱动下批量取出并处理任务。

Template Parameters
T任务数据类型
Note
线程安全:push_back()使用写锁保护队列,run()中批量交换后无锁处理。
析构时自动请求停止并等待工作线程完成。
nwork<LogItem> log_queue([](LogItem& item) {
write_to_file(item);
});
log_queue.push_back(std::make_shared<LogItem>(...));

Constructor & Destructor Documentation

◆ nwork()

template<typename T>
ngl::tools::nwork< T >::nwork ( const std::function< void(T &)> & afun)
inline

构造函数,启动工作线程。

Parameters
afun任务处理回调函数,每个入队任务都会调用此函数

◆ ~nwork()

template<typename T>
ngl::tools::nwork< T >::~nwork ( )
inline

析构函数。

请求工作线程停止,发送信号量唤醒线程,并等待其完成。

Member Function Documentation

◆ make_shared()

template<typename T>
template<typename ... ARGS>
std::shared_ptr< T > ngl::tools::nwork< T >::make_shared ( ARGS &... args)
inlinestatic

创建任务对象的共享指针。

Template Parameters
ARGS构造参数类型
Parameters
args传递给T构造函数的参数
Returns
std::shared_ptr<T> 新创建的任务对象

◆ push_back()

template<typename T>
void ngl::tools::nwork< T >::push_back ( std::shared_ptr< T > & anode)
inline

向队列提交一个任务。

Parameters
anode任务对象的共享指针
Note
线程安全,使用写锁保护队列操作。

◆ run()

template<typename T>
void ngl::tools::nwork< T >::run ( std::stop_token astop)
inline

工作线程主循环。

Parameters
astop停止令牌,用于检测停止请求

等待信号量 → 批量交换队列 → 逐个处理任务 → 循环。


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