写点什么
  • 发布
  • 评论
  • 划线
  • 收藏
  • 关注
  • 全部分类
一个cpp协程库的前世今生(二十四)对象池与栈内存池
一个 cpp 协程库的前世今生(二十四)对象池与栈内存池

本文介绍的 cocpp 中两种管理内存的方式,对象池与栈内存池,简要阐述了其实现原理。若想深入了解,可以参考源码。

一个cpp协程库的前世今生(二十三)env自动回收
一个 cpp 协程库的前世今生(二十三)env 自动回收

本文介绍了 cocpp 中自动 env 自动回收的实现细节,包括策略和整个回收流程。

一个cpp协程库的前世今生(二十二)协程偷取
一个 cpp 协程库的前世今生(二十二)协程偷取

本文主要介绍了 env 在空闲状态采取的策略,以及协程偷取的流程,还有很多不完善之处,待后续版本优化。

一个cpp协程库的前世今生(二十一)协程重分配
一个 cpp 协程库的前世今生(二十一)协程重分配

本文介绍了当协程陷入系统调用,阻塞当前调度线程的时候,如何防止将同一个调度线程上其他的协程堵塞。这个手段是上一节中外部调度的一个良好补充。

一个cpp协程库的前世今生(二十)外部调度
一个 cpp 协程库的前世今生(二十)外部调度

本文讨论了从外部如何切换一个长时间运行的协程,并结合具体的代码案例来深入理解其机制,这一部分功能需要对内核信号处理的实现有一定的理解。在此基础上讨论了安全点存在的必要性以及其实现方法。

一个cpp协程库的前世今生(十九)event
一个 cpp 协程库的前世今生(十九)event

回调函数在降低耦合的场景下很有用,但是其自身具有一定的局限性,扩展性不好。通过对它进行封装,我们既可以得到低耦合又可以得到扩展性。

一个cpp协程库的前世今生(十八)空闲与等待
一个 cpp 协程库的前世今生(十八)空闲与等待

本文介绍了协程休眠的原理,实际上是休眠调度线程,使用条件变量使调度线程让出 CPU,避免空转。另外还介绍了进入睡眠的时机,唤醒的时机,以及哪些影响睡眠的操作,需要同步互斥量来保护。

一个cpp协程库的前世今生(十七)带时限的锁
一个 cpp 协程库的前世今生(十七)带时限的锁

本文介绍了前面三种互斥量对应的带时限的版本,总体来说就是利用一个模板类为现有的实现增加接口,衍生出功能更丰富的类,这个编程技巧在很多功能封装场景下都挺有用的。

一个cpp协程库的前世今生(十六)读写锁
一个 cpp 协程库的前世今生(十六)读写锁

本文描述了共享锁的实现,比其他的锁类型要稍微复杂一些,主要是要区分加锁的类型,不是很难理解。

一个cpp协程库的前世今生(十五)递归互斥量
一个 cpp 协程库的前世今生(十五)递归互斥量

本文介绍了递归互斥量的实现,基本上和普通的互斥量很类似,只是多了一个计数,也很好理解。

一个cpp协程库的前世今生(十四)信号量与条件变量
一个 cpp 协程库的前世今生(十四)信号量与条件变量

本文介绍的条件变量与信号量的实现。其中条件变量其实就是 std::condition_variable_any,并不关心底层的操作对象。而计数信号量是典型的生产者消费者写法,二值信号量是计数信号量的一个特例

一个cpp协程库的前世今生(十三)互斥量
一个 cpp 协程库的前世今生(十三)互斥量

本文讨论了互质量的实现方式,包括如何让协程在不消耗 CPU 的情况下去等待互斥量,如何解锁互斥量并唤醒对应的 ctx。

个人成就
  • 发布了 40 篇内容

    18.1字, 被阅读 1483

  • 获得了 4 次赞同

    获得了 2次喜欢, 获得了 2 次收藏

  • 参与了 4 次互动

    互动包含发布评论、点赞评论、参与投票等

TA 关注的
还没有关注其他内容哦
最新评论
SkyFire