提供在EuvLoop内调用线程池执行阻塞耗时任务的机制
更多...
#include "EuvWork.hpp"
◆ RunWorkCallBack
◆ AfterWorkCallBack
- 参数
-
| e | [in] 错误信息 |
| arg | [in] 用户自定义的参数指针 |
◆ EuvWork()
| Emx::EuvWork::EuvWork |
( |
| ) |
|
|
inline |
◆ Create()
- 参数
-
| 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()
- 参数
-
| 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 |