
老文章迁移
weixin_abctee123
欢迎交流,试用
展开
-
python下协程实现原理与greenlet源码解析
对main task的初始化与task的初始化不同,初始化main task不用设置run属性 (grennlet的callback函数),稍后介绍普通task的初始化时会提到run属 性.maintask对greenlet框架的使用者是透明的,在import greenlet时会执行初 始化操作,每个线程都可以有自己的main task,它的stack_stop属性永远 为-1, stask_start属性永远为1。原创 2023-01-11 11:33:23 · 108 阅读 · 0 评论 -
关于linux下协程的通用实现及libtask库源码解析
当我们需要创建一个用户态上下文的时候, 需要调用makecontext函数,此函数接 受一个ucontext_t类型的指针(ucp), 一个函数指针(切换到此上下文寄存器esp 所指向的地址, 多个函数参数的指针地址(都是int类型,所以在64位环境下需要 用两个参数描述一个待执行函数参数的指针地址))从swapcontext的实现可以看出swapcontext所做的事很简单,保存,恢复.把当前 上下文按顺序保存到rdi的偏移,新的上下文(rsi指向的地址)覆盖老的上下文.原创 2023-01-11 11:26:56 · 145 阅读 · 0 评论