本章继续介绍下phxrpc协程设计思路。看看别人是怎么包装底层库的。
phxrpc的协程对外暴露的接口在UThreadRuntime中,这个类封装了操作系统提供的协程基础函数。并保证了多个协程间的切换是有序的
阅读源码时候,很多同学会关注自定义的方法是如何执行的。自定义方法通过UThreadRuntime的create接口传入,但具体到在UThreadContextSystem::Resume和UThreadContextSystem::Yield之间是如何切换的,需要额外说明下。
首先上图的情形对应到程序大概是下面这样子:
UThreadRuntime runtime_;
int id = runtime_.Create; //传入自定义方法
runtime_.Resume(id);//执行自定义方法,具体到上图,就是执行uc->func_方法,箭头1处
//自定义方法uc->func_执行过程中调用了runtime_Yield()方法,箭头2处
//跳出自定义方法,继续执行下面的函数流程,箭头3处
…………
runtime_.Resume(id)//在需要的地方回到自定义方法un->func_内继续执行,箭头4\5处
在使用协程中,需要注意协程也是需要回收的。这就需要写程序时候,关注协程的生命周期,分两种情况:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。