LogSystem beta 1.4
This is a logging system project
 
载入中...
搜索中...
未找到
Xulog::AsyncLooper类 参考

异步工作器类 更多...

#include <looper.hpp>

Xulog::AsyncLooper 的协作图:

Public 类型

using ptr = std::shared_ptr< AsyncLooper >
 

Public 成员函数

 AsyncLooper (const Functor &func, AsyncType asynctype=AsyncType::ASYNC_SAFE)
 构造函数
 
 ~AsyncLooper ()
 析构函数
 
void stop ()
 停止异步工作器
 
void push (const char *data, size_t len)
 向生产缓冲区推送数据
 

Private 成员函数

void threadEntry ()
 线程入口函数
 

Private 属性

std::atomic< bool > _stop
 停止标志
 
Buffer _pro_buf
 生产缓冲区
 
Buffer _con_buf
 消费缓冲区
 
std::mutex _mutex
 互斥锁
 
std::condition_variable _cond_pro
 生产者条件变量
 
std::condition_variable _cond_con
 消费者条件变量
 
std::thread _thread
 异步工作器的线程
 
AsyncType _looper_type
 异步类型
 
Functor _callBack
 回调函数
 

详细描述

异步工作器类

该类实现了一个异步工作器,通过生产者-消费者模式处理数据。

成员类型定义说明

◆ ptr

using Xulog::AsyncLooper::ptr = std::shared_ptr<AsyncLooper>

构造及析构函数说明

◆ AsyncLooper()

Xulog::AsyncLooper::AsyncLooper ( const Functor func,
AsyncType  asynctype = AsyncType::ASYNC_SAFE 
)
inline

构造函数

参数
func回调函数,用于处理消费缓冲区的数据
asynctype异步类型,默认为 ASYNC_SAFE

构造 AsyncLooper 对象,并启动异步工作线程。

◆ ~AsyncLooper()

Xulog::AsyncLooper::~AsyncLooper ( )
inline

析构函数

停止异步工作器,唤醒所有工作线程并等待线程结束。

函数调用图:

成员函数说明

◆ push()

void Xulog::AsyncLooper::push ( const char *  data,
size_t  len 
)
inline

向生产缓冲区推送数据

参数
data要推送的数据
len数据的长度

根据异步类型控制缓冲区的写入,唤醒消费者处理数据。

函数调用图:

◆ stop()

void Xulog::AsyncLooper::stop ( )
inline

停止异步工作器

设置停止标志,并唤醒所有工作线程。

这是这个函数的调用关系图:

◆ threadEntry()

void Xulog::AsyncLooper::threadEntry ( )
inlineprivate

线程入口函数

持续监测生产缓冲区的数据,并处理消费缓冲区的数据。

当停止标志被设置且缓冲区为空时,线程结束。

函数调用图:

类成员变量说明

◆ _callBack

Functor Xulog::AsyncLooper::_callBack
private

回调函数

◆ _con_buf

Buffer Xulog::AsyncLooper::_con_buf
private

消费缓冲区

◆ _cond_con

std::condition_variable Xulog::AsyncLooper::_cond_con
private

消费者条件变量

◆ _cond_pro

std::condition_variable Xulog::AsyncLooper::_cond_pro
private

生产者条件变量

◆ _looper_type

AsyncType Xulog::AsyncLooper::_looper_type
private

异步类型

◆ _mutex

std::mutex Xulog::AsyncLooper::_mutex
private

互斥锁

◆ _pro_buf

Buffer Xulog::AsyncLooper::_pro_buf
private

生产缓冲区

◆ _stop

std::atomic<bool> Xulog::AsyncLooper::_stop
private

停止标志

◆ _thread

std::thread Xulog::AsyncLooper::_thread
private

异步工作器的线程