Swift Concurrency 初探
什么是协程
协程, 又名纤程,是一种协作式的任务调度模式,程序可以主动挂起或者恢复执行。简单来说就是我们自己可以控制程序/函数的挂起和恢复,而不阻塞当前的执行线程。从这里大家可以看出,协程是一种比线程还轻量级的调度单元,无需类似进程,线程的上下文切换,不消耗CPU资源。
线程是操作系统层面的概念,协程是语言层面的概念。
下面我们通过 生产者-消费者模型 来看看到底什么是协程:
1 | import time |
协程, 又名纤程,是一种协作式的任务调度模式,程序可以主动挂起或者恢复执行。简单来说就是我们自己可以控制程序/函数的挂起和恢复,而不阻塞当前的执行线程。从这里大家可以看出,协程是一种比线程还轻量级的调度单元,无需类似进程,线程的上下文切换,不消耗CPU资源。
线程是操作系统层面的概念,协程是语言层面的概念。
下面我们通过 生产者-消费者模型 来看看到底什么是协程:
1 | import time |
随着智能手机,平板在中国普及率的上升,人们越来越依赖移动设备进行娱乐、消费,由此催生出的App更是层出不穷。根据苹果2019年2月的数据,目前AppStore上的App数量已经超过220万,比2018年同期增长了近10万个App。2015年6月到2016年6月可谓是App发展的高速时期,仅仅一年时间就增长了50万个App;同时期也是中国互联网+的黄金时期,各种创业项目,平台推出了各式各样的移动App产品。
随着App的爆发式增长,我们越来越清晰地发现, 大多数App是无法长期停留在用户手机里的, 而今天这篇文章,我们将从一个开发者的角度来思考:如何提升用户体验,让我们的App在同类产品中脱颖而出,最终能够长期稳定的存在于用户手机之中。
每当我们说到用户体验,我们往往想到的是优化界面,交互方式等。这些固然重要,但这更多的是产品和UX的职责。作为开发,我们需要考虑他们无法完成的,更有技术导向的事情,比方说:优化App的启动流程。
我是一名移动开发者,也做Web和混合开发,目前有6年的开发经验。
最早接触的是iOS开发, 那是在大三尾巴上的时候,那个暑假去魅族实习,挣了万把块钱,就”败了”一台MBP 13。当时买它的主要原因还不是想做Apple的开发,是源于我们的Team Lead。他从微软回来后加盟的魅族,也在微软做过Scrum Master, 带领团队。他提到在美国,老美们都用Mac开发,说它是开发利器,加上我们当时做Ruby on Rails,每次看他”秀”终端操作和工具的时候,总觉得那才是一个开发应该有的样子。当然你用其他系统一样可以开发,一样可以使用终端操作。除此之外,我还想学iOS开发,毕竟魅族当时也被誉为”中国的Apple”,我们的产品经理也是苹果粉,天天在爱范儿关注着各类信息。就这样,在他们的持续熏陶下,我踏上了iOS开发的道路。