librf
Public 成员函数 | 所有成员列表
resumef::scheduler_t结构体 参考

协程调度器。 更多...

继承自 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_managertimer () const noexcept
 获得定时管理器。
 

详细描述

协程调度器。

librf的设计原则之一,就是要将协程绑定在固定的调度器里执行。 通过控制调度器运行的线程和时机,从而控制协程所在的线程和运行时机。

成员函数说明

◆ empty()

bool resumef::scheduler_t::empty ( ) const
inline

判断所有协程是否运行完毕。

返回值
bool以下条件全部满足,返回true:
1、所有协程运行完毕
2、没有正在准备执行的state
3、定时管理器的empty()返回true。

◆ operator+()

template<class _Ty >
void resumef::scheduler_t::operator+ ( _Ty &&  coro)
inline

将一个协程加入到调度器里开始运行。

推荐使用go或者GO这两个宏来启动协程。
go用于启动future_t<>/generator_t<>;
GO用于启动一个所有变量按值捕获的lambda。

参数
coro协程对象。future_t<>,generator_t<>,或者一个调用后返回future_t<>/generator_t<>的函数对象。

◆ run_one_batch()

void resumef::scheduler_t::run_one_batch ( )

运行一批准备妥当的协程。

这是协程调度器提供的主要接口。同一个调度器非线程安全,不可重入。
调用者要保证此函数始终在同一个线程里调用。

◆ run_until_notask()

void resumef::scheduler_t::run_until_notask ( )

循环运行所有的协程,直到所有协程都运行完成。

通常用于测试代码。


该结构体的文档由以下文件生成: