tinyCoroLab Docs
直通tinyCoroLab源码直通tinyCoro源码
latest
latest
  • 🚀开启你的tinyCoroLab之旅!
  • 📮致读者
  • 👊C++协程入门
    • 协程初探
    • 有栈协程VS无栈协程
    • C++协程入门实践
    • 从编译器视角揭秘 C++ 协程
    • 协程调用优化
  • 🌟认识io_uring
  • 📖tinyCoroLab实验介绍
  • 📘Lab1 构建协程任务封装
    • Lab1 构建协程任务封装
    • Lab1 实验解析
  • 📗Lab2 构建任务执行引擎
    • Lab2a 构建任务执行引擎engine
    • Lab2a 实验解析
    • Lab2b 构建任务执行引擎context
    • Lab2b 实验解析
  • 📙Lab3 封装异步I/O执行模块
  • 📕Lab4 构建基础协程同步组件
    • Lab4pre 如何构建协程同步组件
    • Lab4a 构建基础协程同步组件event
    • Lab4a 实验解析
    • Lab4b 构建基础协程同步组件latch
    • Lab4b 实验解析
    • Lab4c 构建基础协程同步组件wait_group
    • Lab4c 实验解析
    • Lab4d 构建基础协程同步组件mutex
    • Lab4d 实验解析
  • 📓Lab5 构建进阶协程同步组件
    • Lab5a(选做) 构建进阶协程同步组件when_all
    • Lab5a 实验解析
    • Lab5b 构建进阶协程同步组件condition_variable
    • Lab5b 实验解析
    • Lab5c 构建进阶协程同步组件channel
    • Lab5c 实验解析
  • ✨tinyCoro Bonus Lab
  • 🎯tinyCoro悬赏令
  • ⚔️面试实战
    • 面试实战
    • tinyCoro面试相关问题
  • 🚩实验总结-终点亦是起点
  • 🪐番外杂谈
    • 从编译器视角揭秘 C++ 协程
    • 协程调用优化
  • 📌更新日志
Powered by GitBook
On this page
  • tinyCoro
  • tinyCoroLab
  • tinyCoroLabDoc

📌更新日志

记录 tinyCoroLab 课程全部资源的版本更新日志

⚠️tinyCoro、tinyCoroLab 和 tinyCoroLabDoc 的版本号命名一致,实验者在做某版本的 tinyCoroLab 时请切换至对应版本的 tinyCoroLabDoc

tinyCoro

[v1.2] - 2025-06-06

新增功能

  • 为文档新增tinyCoro Bonus Lab,用户可以根据该实验进一步拓展优化自己的tinyCoro

  • 为文档新增tinyCoro 悬赏令,用户可根据自身兴趣向作者的tinyCoro贡献代码

  • lab5a由选做实验升级为正式实验,实验解析制作中

  • 添加并行计算模块,用户可利用tinyCoroLab提供的API进行并行计算,具体代码可见include/coro/parallel/parallel.hpp,使用样例可见examples/parallel_calc.cpp

  • 添加基于ubuntu系统的CI流水线,用户可在tinyCoroLab的README中查看关于CI流水线的使用

  • 重构IO模块的代码组织结构,便于后续拓展更多IO支持

[io_uring update] - 2025-05-03

新增功能

  • io_uring现已支持IOSQE_FIXED_FILE优化,通过配置文件内配置项开启

变更详情

对于针对某个IO需要频繁读写的场景,对其相应的sqe开启IOSQE_FIXED_FILE选项可以使得io_uring不需要对文件描述符做额外的检查工作,从而提升性能,经测试benchmark性能可以提升10%~20%。

关于IOSQE_FIXED_FILE优化的具体实现采用了动态分配FIXED_FILE并更新的策略,这部分实现读者可以从uring_proxy.hpp文件获取,建议读者先了解io_uring_register_files()的用法。

[v1.1] - 2025-04-09

主要变更

1.0 版本 scheduler 的设计存在诸多缺陷,在短期运行工作模式下 context 完成所有任务后会立刻停止(因为 scheduler 会在 context 启动后立刻调用notify_stop通知其停止,context 收到该信号在处理完所有任务后立刻停止),这导致 context 运行中无法安全的将任务派发给 scheduler,因为 scheduler 可能会把任务派发给已经停止的 context,总之,这种设计很怪异且不合理。

1.1 版本移除了工作模式这一概念,重新设计了 scheduler 对 context 的交互逻辑,现在用户使用 tinyCoro 更简单了:

schduler::init();
submit_to_scheduler(func());
// repeat submit...
// scheduler::start(); don;t need this
scheduler::loop();

在提交完所有任务后只需要调用scheduler::loop,scheduler 便会启动所有 context 然后等待 context 全部完成任务后再统一下发送停止信号,这样哪怕某个 context 先运行完毕也会处于阻塞态而不是停止,因为未来 scheduler 很可能向其派发新的任务,基于此,用户可以放心的在协程任务中调用submit_to_scheduler。

除此外,所有测试以及样例代码中 scheduler 的运行全部采用上述代码逻辑。

[v1.0] - 2025-04-01

主要变更

  • 1.0 版本正式发布

tinyCoroLab

[v1.2] - 2025-06-06

变更详情

参照tinyCoro的变更详情。

[io_uring update] - 2025-05-03

变更详情

参照tinyCoro的变更详情。

[v1.1] - 2025-04-09

主要变更

  • 为 lab2b 新增了一个子任务用来实现 tinyCoro1.1 版本新增的功能,并为 lab2b 新增测试样例

  • 主页移除了关于运行模式的介绍,取而代之的是新的 scheduler 的设计思路

[v1.0] - 2025-04-01

主要变更

  • 1.0 版本正式发布

tinyCoroLabDoc

[v1.2] - 2025-06-06

变更详情

参照tinyCoro的变更详情。

[v1.1] - 2025-04-09

主要变更

为 lab2b 新增的子任务添加任务书。

[v1.0] - 2025-04-01

主要变更

  • 1.0 版本正式发布

Previous协程调用优化

Last updated 15 days ago