librf
|
协程调度器。 更多...
继承自 enable_shared_from_this< scheduler_t > .
Public 成员函数 | |
void | run_one_batch () |
运行一批准备妥当的协程。 更多... | |
void | run_until_notask () |
循环运行所有的协程,直到所有协程都运行完成。 更多... | |
template<class _Ty > | |
void | operator+ (_Ty &&coro) |
将一个协程加入到调度器里开始运行。 更多... | |
bool | empty () const |
判断所有协程是否运行完毕。 更多... | |
timer_manager * | timer () const noexcept |
获得定时管理器。 | |
协程调度器。
librf的设计原则之一,就是要将协程绑定在固定的调度器里执行。 通过控制调度器运行的线程和时机,从而控制协程所在的线程和运行时机。
|
inline |
判断所有协程是否运行完毕。
bool | 以下条件全部满足,返回true: 1、所有协程运行完毕 2、没有正在准备执行的state 3、定时管理器的empty()返回true。 |
|
inline |
将一个协程加入到调度器里开始运行。
推荐使用go或者GO这两个宏来启动协程。
go用于启动future_t<>/generator_t<>;
GO用于启动一个所有变量按值捕获的lambda。
coro | 协程对象。future_t<>,generator_t<>,或者一个调用后返回future_t<>/generator_t<>的函数对象。 |
void resumef::scheduler_t::run_one_batch | ( | ) |
运行一批准备妥当的协程。
这是协程调度器提供的主要接口。同一个调度器非线程安全,不可重入。
调用者要保证此函数始终在同一个线程里调用。
void resumef::scheduler_t::run_until_notask | ( | ) |
循环运行所有的协程,直到所有协程都运行完成。
通常用于测试代码。