librf

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

协程调度器。 更多...

继承自 enable_shared_from_this< scheduler_t > .

## Public 成员函数
void | run_one_batch ()
| 运行一批准备妥当的协程。 更多...
void | run_until_notask ()
| 循环运行所有的协程，直到所有协程都运行完成。 更多...
template<class _Ty >
task_t * | operator+ (_Ty &&coro)
| 将一个协程加入到调度器里开始运行。 更多...
bool | empty () const
| 判断所有协程是否运行完毕。 更多...
timer_manager * | timer () const noexcept
| 获得定时管理器。

## 详细描述

协程调度器。

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

## 成员函数说明

## ◆ empty()

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

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

返回值

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

## ◆ operator+()

template<class _Ty >

task_t* 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<>的函数对象。

返回值

  task_t* | 返回代表一个新协程的协程任务类。

## ◆ run_one_batch()

void resumef::scheduler_t::run_one_batch | ( |  | ) |

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

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

## ◆ run_until_notask()

void resumef::scheduler_t::run_until_notask | ( |  | ) |

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

通常用于测试代码。

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

- librf/src/scheduler.h