刚刚,阿里开源 iOS 协程开发框架 coobjc!( 三 )
从互相独立的调用中组合返回结果变得极其困难
在错误的线程中继续执行(如子线程操作UI)
难以定位原因的多线程崩溃(手淘中多线程crash已占比60%以上)
锁和信号量滥用带来的卡顿、卡死
针对多线程以及尤其引发的各种崩溃和性能问题 , 我们制定了很多编程规范、进行了各种新人培训 , 尝试降低问题发生的概率 , 但是问题依然很严峻 , 多线程引发的问题占比并没有明显的下降 , 异步编程本来就是很复杂的事情 , 单靠规范和培训是难以从根本上解决问题的 , 需要有更加好的编程方式来解决 。
解决方案
上述问题在很多系统和语言开发中都可能会碰到 , 解决问题的标准方式就是使用协程 , C#、Kotlin、Python、Javascript 等热门语言均支持协程极其相关语法 , 使用这些语言的开发者可以很方便的使用协程及相关功能进行异步编程 。
2017 年的 C++ 标准开始支持协程 , Swift5 中也包含了协程相关的标准 , 从现在的发展趋势看基于协程的全新的异步编程方式 , 是我们解决现有异步编程问题的有效的方式 , 但是苹果基本已经不会升级 Objective-C 了 , 因此使用Objective-C的开发者是无法使用官方的协程能力的 , 而最新 Swift 的发布和推广也还需要时日 , 为了让广大iOS开发者能快速享受到协程带来的编程方式上的改变 , 手机淘宝架构团队基于长期对系统底层库和汇编的研究 , 通过汇编和C语言实现了支持 Objective-C 和 Swift 协程的完美解决方案 —— coobjc 。
推荐阅读
- 阿修罗|阴阳师:超鬼王后日谈,数值怪全面开花,活动一年一次刚刚好
- 电子竞技|S11刚刚结束,中日韩亚洲对抗赛拉开序幕,参赛阵容豪华
- kpl秋季赛|KPL秋季赛XYG.羲和细节单杀伽罗,大仙:刚刚卡住是我的错,稳住!
- 传奇世界|传奇世界:家族公会情节
- 逆水寒|不愧是网易游戏“亲儿子”!刚刚首测,就豪掷百万拉着玩家去度假
- 星际争霸|虫族起源资料 我们熟知的智慧虫群 刚刚诞生不到70年
- 云缨|新英雄云缨刚刚登陆,三大克星已诞生,张良有控制,他们能反秒
- lpl|LPL再次迎来“重量级上单”!刚刚加冕总冠军,就立志成为LPL选手
- 原神|原神:优菈PV刚刚上线,爱打喷嚏的她就被国内外网友玩坏了
- 原神|原神:钟离一命不够用,二命刚刚好,满命没必要?