acl
3.5.3.0
|
#include <fiber.hpp>
Public 成员函数 | |
fiber (bool running=false) | |
virtual | ~fiber (void) |
void | start (size_t stack_size=320000) |
bool | kill (void) |
bool | killed (void) const |
unsigned int | get_id (void) const |
int | get_errno (void) const |
void | set_errno (int errnum) |
ACL_FIBER * | get_fiber (void) const |
静态 Public 成员函数 | |
static bool | self_killed (void) |
static unsigned int | self (void) |
static const char * | last_serror (void) |
static int | last_error (void) |
static const char * | strerror (int errnum, char *buf, size_t size) |
static void | stdout_open (bool on) |
static void | init (fiber_event_t type, bool schedule_auto=false) |
static void | schedule (void) |
static void | schedule_with (fiber_event_t type) |
static bool | scheduled (void) |
static void | schedule_stop (void) |
static void | yield (void) |
static void | switch_to_next (void) |
static void | ready (fiber &f) |
static unsigned int | delay (unsigned int milliseconds) |
static unsigned | alive_number (void) |
static unsigned | dead_number (void) |
static void | hook_api (bool on) |
static void | acl_io_hook (void) |
static void | acl_io_unlock (void) |
static bool | winapi_hook (void) |
static int | get_sys_errno (void) |
static void | set_sys_errno (int errnum) |
static void | fiber_create (void(*fn)(ACL_FIBER *, void *), void *ctx, size_t size) |
Protected 成员函数 | |
virtual void | run (void) |
acl::fiber::fiber | ( | bool | running = false | ) |
构造函数
running | {bool} 当为 true 时,则表示当前协程已启动,仅是声明 了一个协程对象而已,以便于与 ACL_FIBER 对象绑定,此时禁止调用本对 象的 start 方法启动新协程; 当为 false 时,则需要调用 start 方法来 启动新协程 |
|
virtual |
|
static |
显式调用本函数使 acl 基础库的 IO 过程协程化,在 UNIX 平台下不必显式 调用本函数,因为内部会自动 HOOK IO API
|
static |
调用本函数取消 acl基础库中的 IO 协程化
|
static |
获得处于存活状态的协程数量
|
static |
获得处于退出状态的协程对象数量
|
static |
使当前运行的协程休眠指定毫秒数
milliseconds | {unsigned int} 指定要休眠的毫秒数 |
|
static |
底层调用 C API 创建协程
fn | {void (*)(ACL_FIBER*, void*)} 协程函数执行入口 |
ctx | {void*} 传递给协程执行函数的参数 |
size | {size_t} 协程栈大小 |
被这些函数引用 acl::go_fiber::operator >().
int acl::fiber::get_errno | ( | void | ) | const |
获得当前协程在执行某个系统 API 出错时的错误号 return {int}
ACL_FIBER* acl::fiber::get_fiber | ( | void | ) | const |
返回本协程对象对应的 C 语言的协程对象
unsigned int acl::fiber::get_id | ( | void | ) | const |
获得本协程对象的 ID 号
|
static |
获得当前系统级错误号
|
static |
线程启动后调用此函数设置当前线程是否需要 hook 系统 API,内部缺省 会 hook 系统 API
on | {bool} |
|
static |
显式设置协程调度事件引擎类型,同时设置协程调度器为自启动模式,即当 创建协程后不必显式调用 schedule 或 schedule_with 来启动协程调度器
type | {fiber_event_t} 事件引擎类型,参见:FIBER_EVENT_T_XXX |
schedule_auto | {bool} 若为 true,则创建协程对象后并运行该协程 对象后不必显式调用 schedule/schedule_with 来启动所有的协程过程,内 部会自动启动协程调度器;否则,在创建并启动协程后,必须显式地调用 schedule 或 schedule_with 方式来启动协程调度器以运行所的协程过程; 内部缺省状态为 false |
bool acl::fiber::kill | ( | void | ) |
在本协程运行时调用此函数通知该协程退出
bool acl::fiber::killed | ( | void | ) | const |
判断当前协程是否被通知退出
|
static |
获得本次操作的出错号
|
static |
获得本次操作的出错信息
|
static |
将指定协程对象置入待运行队列中
f | {fiber&} |
|
protectedvirtual |
虚函数,子类须实现本函数,当通过调用 start 方法启动协程后,本 虚函数将会被调用,从而通知子类协程已启动; 如果在构造函数中的参数 running 为 true ,则 start 将被禁止调用,故本虚方法也不会被调用
|
static |
启动协程运行的调度过程
|
static |
停止协程调度过程
|
static |
启动协程调度时指定事件引擎类型,调用本方法等于同时调用了 schedule_init 及 schedule 两个方法
type | {fiber_event_t} 事件引擎类型,参见:FIBER_EVENT_T_XXX |
|
static |
判断当前线程是否处于协程调度状态
|
static |
获得当前运行的协程对象的 ID 号
|
static |
判断当前正在运行的协程是否被通知退出,该方法与 killed 的区别为, killed 首先必须有 acl::fiber 对象依托,且该协程对象有可能正在运行, 也有可能被挂起,而 self_killed 不需要 acl::fiber 对象依托且一定表示 当前正在运行的协程
void acl::fiber::set_errno | ( | int | errnum | ) |
设置当前协程的错误号
errnum | {int} |
|
static |
设置当前系统级错误号
errnum | {int} |
void acl::fiber::start | ( | size_t | stack_size = 320000 | ) |
在创建一个协程类对象且构造参数 running 为 false 时,需要本函数启动 协程,然后子类的重载的 run 方法将被回调,如果 running 为 true 时, 则禁止调用 start 方法
stack_size | {size_t} 创建的协程对象的栈大小 |
|
static |
将错误信息输出至标准输出
on | {bool} 为 true 时,内部出错信息将输出至标准输出 |
|
static |
将所给错误号转成描述信息
errnum | {int} 错误号 |
buf | {char*} 存储结果 |
size | {size_t} buf 空间大小 |
|
static |
挂起当前协程,执行等待队列中的下一个协程
|
static |
Windows 平台下可以显式地调用此函数 Hook 一些与网络协程相关的系统 API
|
static |
将当前正在运行的协程(即本协程) 挂起