PhxRPC源码分析(二)uthread_context

本文详细分析了PhxRPC中的UThreadContext及其相关组件,包括UThreaStackMemory、UThreadContextSystem、UThreadRuntime和UThreadEpollScheduler等。UThreadContext作为协程接口的基类,通过UThreaStackMemory实现每个协程的私有栈。UThreadContextSystem基于ucontext实现协程上下文,而UThreadRuntime负责协程调度。UThreadEpollScheduler则封装了epoll驱动的协程调度,实现异步操作。文章还探讨了协程的创建、切换和复用过程。
摘要由CSDN通过智能技术生成

uthread

协程的概念在coroutine源码分析中有介绍。phxrpc默认使用ucontext作实现,同时还有boost优化版本。

UThreadContext

UThreadContext是定义了协程接口的基类,并且有一个静态函数对象,用来创建协程上下文,其应该是子类的DoCreate函数,

UThreaStackMemory

UThreaStackMemory是每个协程的私有栈,这里并没有实现共享栈模式,节省了拷贝,而且内存分配也没有使用malloc,而是使用的mmap,这里设置了一个标志变量need_protect_来选择是否开启保护模式,开启保护模式会在栈两端各多分配一页,并将这两页设置PROT_NONE属性禁止访问。调用mmap时同时设置了MAP_ANONYMOUS | MAP_PRIVATE,MAP_ANONYMOUS表示这段内存是匿名的,不需要读写fd。MAP_PRIVATE建立一个私有映射,不与其他进程共享。

UThreadContextSystem

UThreadContextSystem是默认的使用ucontext作实现的协程上下文。每个上下文维护一个context_表示协程的上下文ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值