发布了 40 篇内容
共 18.1字, 被阅读 1483次
获得了 4 次赞同
获得了 2次喜欢, 获得了 2 次收藏
参与了 4 次互动
互动包含发布评论、点赞评论、参与投票等
一个 cpp 协程库的前世今生(二十四)对象池与栈内存池
本文介绍的 cocpp 中两种管理内存的方式,对象池与栈内存池,简要阐述了其实现原理。若想深入了解,可以参考源码。
一个 cpp 协程库的前世今生(二十三)env 自动回收
本文介绍了 cocpp 中自动 env 自动回收的实现细节,包括策略和整个回收流程。
一个 cpp 协程库的前世今生(二十二)协程偷取
本文主要介绍了 env 在空闲状态采取的策略,以及协程偷取的流程,还有很多不完善之处,待后续版本优化。
一个 cpp 协程库的前世今生(二十一)协程重分配
本文介绍了当协程陷入系统调用,阻塞当前调度线程的时候,如何防止将同一个调度线程上其他的协程堵塞。这个手段是上一节中外部调度的一个良好补充。
一个 cpp 协程库的前世今生(二十)外部调度
本文讨论了从外部如何切换一个长时间运行的协程,并结合具体的代码案例来深入理解其机制,这一部分功能需要对内核信号处理的实现有一定的理解。在此基础上讨论了安全点存在的必要性以及其实现方法。
一个 cpp 协程库的前世今生(十九)event
回调函数在降低耦合的场景下很有用,但是其自身具有一定的局限性,扩展性不好。通过对它进行封装,我们既可以得到低耦合又可以得到扩展性。
一个 cpp 协程库的前世今生(十八)空闲与等待
本文介绍了协程休眠的原理,实际上是休眠调度线程,使用条件变量使调度线程让出 CPU,避免空转。另外还介绍了进入睡眠的时机,唤醒的时机,以及哪些影响睡眠的操作,需要同步互斥量来保护。
一个 cpp 协程库的前世今生(十七)带时限的锁
本文介绍了前面三种互斥量对应的带时限的版本,总体来说就是利用一个模板类为现有的实现增加接口,衍生出功能更丰富的类,这个编程技巧在很多功能封装场景下都挺有用的。
一个 cpp 协程库的前世今生(十六)读写锁
本文描述了共享锁的实现,比其他的锁类型要稍微复杂一些,主要是要区分加锁的类型,不是很难理解。
一个 cpp 协程库的前世今生(十五)递归互斥量
本文介绍了递归互斥量的实现,基本上和普通的互斥量很类似,只是多了一个计数,也很好理解。
一个 cpp 协程库的前世今生(十四)信号量与条件变量
本文介绍的条件变量与信号量的实现。其中条件变量其实就是 std::condition_variable_any,并不关心底层的操作对象。而计数信号量是典型的生产者消费者写法,二值信号量是计数信号量的一个特例
一个 cpp 协程库的前世今生(十三)互斥量
本文讨论了互质量的实现方式,包括如何让协程在不消耗 CPU 的情况下去等待互斥量,如何解锁互斥量并唤醒对应的 ctx。
最新评论
一个 cpp 协程库的前世今生(二十)外部调度
搭建 PXE 服务器(Ubuntu/Deepin)
搭建 PXE 服务器(Ubuntu/Deepin)