刚刚,阿里开源 iOS 协程开发框架 coobjc!( 三 )

  • 从互相独立的调用中组合返回结果变得极其困难

  • 在错误的线程中继续执行(如子线程操作UI)

  • 难以定位原因的多线程崩溃(手淘中多线程crash已占比60%以上)

  • 锁和信号量滥用带来的卡顿、卡死

  • 针对多线程以及尤其引发的各种崩溃和性能问题 , 我们制定了很多编程规范、进行了各种新人培训 , 尝试降低问题发生的概率 , 但是问题依然很严峻 , 多线程引发的问题占比并没有明显的下降 , 异步编程本来就是很复杂的事情 , 单靠规范和培训是难以从根本上解决问题的 , 需要有更加好的编程方式来解决 。

    解决方案

    上述问题在很多系统和语言开发中都可能会碰到 , 解决问题的标准方式就是使用协程 , C#、Kotlin、Python、Javascript 等热门语言均支持协程极其相关语法 , 使用这些语言的开发者可以很方便的使用协程及相关功能进行异步编程 。

    2017 年的 C++ 标准开始支持协程 , Swift5 中也包含了协程相关的标准 , 从现在的发展趋势看基于协程的全新的异步编程方式 , 是我们解决现有异步编程问题的有效的方式 , 但是苹果基本已经不会升级 Objective-C 了 , 因此使用Objective-C的开发者是无法使用官方的协程能力的 , 而最新 Swift 的发布和推广也还需要时日 , 为了让广大iOS开发者能快速享受到协程带来的编程方式上的改变 , 手机淘宝架构团队基于长期对系统底层库和汇编的研究 , 通过汇编和C语言实现了支持 Objective-C 和 Swift 协程的完美解决方案 —— coobjc 。

    推荐阅读