基于协程的编程方式在移动端研发的思考及最佳实践
超级App的性能和代码痛点
在iOS开发中线程使用特别方便,但是多线程使用不当引发的崩溃问题很多
- 多线程访问引发野指针问题
- 多线程访问引发容器类崩溃问题
- 多线程访问引发过渡释放问题
以手机淘宝为例,整个生命周期大量使用线程,多线程使用不当引发的崩溃问题占比达到了60%以上
**
为了解决多线程崩溃问题或者为了让代码可读性更强可能会严重牺牲应用性能
- iOS系统API设计很不友好,绝大部分IO、跨进程调用等耗时接口提供的都是同步方法,主线程调用会产生严重性能问题
- 为了解决多线程崩溃加的锁、信号量等,由于设计不合理,很容易引发卡顿甚至死锁
- iOS系统API缺乏统一的异步编程模型,Delegate、Callback、同步等杂揉在一起,要写出高性能代码需要付出极大的努力
手机淘宝卡顿问题分布
系统API、IO等接口在异步编程上支持并不友好,极易产生性能问题
**

