刚刚,阿里开源 iOS 协程开发框架 coobjc!( 六 )
Resume:继续协程的运行 。 执行Resume后 , 回到上一次协程Yield的地方 。
我们基于线程的代码执行时候 , 是没法做出暂停操作的 , 我们现在要做的事情就是要代码执行能够暂停 , 还能够再恢复 。 基本上代码执行都是一种基于调用栈的模型 , 所以如果我们能把当前调用栈上的状态都保存下来 , 然后再能从缓存中恢复 , 那我们就能够实现yield和 resume 。
实现这样操作有几种方法呢?
-
第一种:利用glibc 的 ucontext组件(云风的库) 。
-
第二种:使用汇编代码来切换上下文(实现c协程) , 原理同ucontext 。
-
第三种:利用C语言语法switch-case的奇淫技巧来实现(Protothreads) 。
-
第四种:利用了 C 语言的 setjmp 和 longjmp 。
-
第五种:利用编译器支持语法糖 。
推荐阅读
- 阿修罗|阴阳师:超鬼王后日谈,数值怪全面开花,活动一年一次刚刚好
- 电子竞技|S11刚刚结束,中日韩亚洲对抗赛拉开序幕,参赛阵容豪华
- kpl秋季赛|KPL秋季赛XYG.羲和细节单杀伽罗,大仙:刚刚卡住是我的错,稳住!
- 传奇世界|传奇世界:家族公会情节
- 逆水寒|不愧是网易游戏“亲儿子”!刚刚首测,就豪掷百万拉着玩家去度假
- 星际争霸|虫族起源资料 我们熟知的智慧虫群 刚刚诞生不到70年
- 云缨|新英雄云缨刚刚登陆,三大克星已诞生,张良有控制,他们能反秒
- lpl|LPL再次迎来“重量级上单”!刚刚加冕总冠军,就立志成为LPL选手
- 原神|原神:优菈PV刚刚上线,爱打喷嚏的她就被国内外网友玩坏了
- 原神|原神:钟离一命不够用,二命刚刚好,满命没必要?