Fiber协程的构造、状态及操作详解与函数介绍
该思维导图概述了Fiber协程的基本构造函数、状态及操作。构造函数包括私有的Fiber()用于创建主协程,以及接受回调函数和栈大小的构造函数。协程的状态包括就绪(READY)、运行(RUNNING)和结束(TERM)。协程操作包括挂起(yield)、恢复(resume)和重用(reset)。重用操作允许重复利用已结束的协程,建立新协程。最后,定义了静态的协程主函数(MainFunc)。
源码
# Fiber协程
- 构造函数
- Fiber()
- 定义在private中
- 由GetThis()调用
- 私有
- 创建主协程
- 不申请协程栈空间
- Fiber(std::function cb, size_t stacksize = 0, bool run_in_scheduler = true)
- cb:回调函数
- stacksize:栈大小,默认为0
- run_in_scheduler:是否在调度器中运行,默认为true
- 协程状态
- READY:就绪
- 可被调度执行
- RUNNING:运行
- 当前正在执行的协程
- TERM:结束
- 不可再恢复执行
- 协程操作
- 挂起
- void yield()
- 当前协程变为 READY
- 上次resume时的协程变为 RUNNING
- 恢复
- void resume()
- 当前协程变为 RUNNING
- 正在运行的协程变为 READY
- 重用协程
- void reset(std::function cb)
- 重复利用已结束的协程
- 复用其栈空间,创建新协程
- 原状态为 TERM,新协程状态为 READY
- 协程函数
- static void MainFunc()
- 协程的入口函数
- 初始化协程环境
图片
