Emx::EuvWork类 参考

提供在EuvLoop内调用线程池执行阻塞耗时任务的机制 更多...

#include "EuvWork.hpp"

Public 类型

using RunWorkCallBack = std::function< void(void *arg)>
 注册执行耗时阻塞任务的回调函数,此函数运行在loop外的线程池中 更多...
 
using AfterWorkCallBack = std::function< void(Emx::ErrCodeE e, void *arg)>
 任务执行完毕的回调函数,此函数运行在loop中,在此回调中可以再次Run新的任务 更多...
 

Public 成员函数

 EuvWork ()
 
ErrCodeE Create (EuvLoop *loop, void *arg=nullptr, RunWorkCallBack runCb=nullptr, AfterWorkCallBack afterCb=nullptr, const std::string &threadName="")
 创建work,可指定后续运行参数 更多...
 
void Destroy ()
 销毁work,如果任务未执行则立刻返回,如果任务在执行中则以阻塞方式等待任务执行完毕 更多...
 
ErrCodeE Run (void *arg=nullptr, RunWorkCallBack runCb=nullptr, AfterWorkCallBack afterCb=nullptr, const std::string &threadName="")
 运行任务 更多...
 
bool IsWorking ()
 获取work是否正在运行 更多...
 

静态 Public 成员函数

static void SetWorkNum (int num)
 配置当前进程线程池大小 更多...
 
static int GetWorkNum ()
 获取当前进程线程池大小 更多...
 

详细描述

!

成员类型定义说明

◆ RunWorkCallBack

using Emx::EuvWork::RunWorkCallBack = std::function<void(void *arg)>
参数
arg[in] 用户自定义的参数指针

◆ AfterWorkCallBack

using Emx::EuvWork::AfterWorkCallBack = std::function<void(Emx::ErrCodeE e, void *arg)>
参数
e[in] 错误信息
arg[in] 用户自定义的参数指针

构造及析构函数说明

◆ EuvWork()

Emx::EuvWork::EuvWork ( )
inline

成员函数说明

◆ Create()

ErrCodeE Emx::EuvWork::Create ( EuvLoop loop,
void *  arg = nullptr,
RunWorkCallBack  runCb = nullptr,
AfterWorkCallBack  afterCb = nullptr,
const std::string &  threadName = "" 
)
参数
loop[in] 需要绑定的loop
arg[in] 用户自定义的参数,会被传入到runCb与afterCb中
runCb[in] 执行任务的函数
afterCb[in] 任务结束后的回调函数
threadName[in] 线程名称
返回
ErrCodeE

◆ Destroy()

void Emx::EuvWork::Destroy ( )

!

注解
此操作可能会阻塞所在loop,不建议在调用频繁的场景中使用
此操作执行时,若Run还没有收到afterCb回调(包括未执行和正在执行), 则此操作会取消任务或等待任务结束并主动调用afterCb回调(参数ErrCodeE == DESTROYED)

◆ Run()

ErrCodeE Emx::EuvWork::Run ( void *  arg = nullptr,
RunWorkCallBack  runCb = nullptr,
AfterWorkCallBack  afterCb = nullptr,
const std::string &  threadName = "" 
)
参数
arg[in] 用户自定义的参数,会被传入到runCb与afterCb中
runCb[in] 执行任务的函数
afterCb[in] 任务结束后的回调函数
threadName[in] 线程名称
返回
ErrCodeE
注解
注意每个EuvWork在执行此调用之后都需要等待afterCb被调用或者Destroy-Create被调用之后才能Run新的任务
如果Create创建时已经指定了参数,那么可以使用创建时的参数或是修改某些参数,nullptr表示不修改参数

◆ IsWorking()

bool Emx::EuvWork::IsWorking ( )
inline
返回
是否正在运行

◆ SetWorkNum()

static void Emx::EuvWork::SetWorkNum ( int  num)
static
参数
num[in] 线程池大小,当前最大1024,默认为4

◆ GetWorkNum()

static int Emx::EuvWork::GetWorkNum ( )
static
返回
当前线程池大小