并发性是多个事物同时发生的概念。随着多核CPU的普及,以及每个处理器内核数量只会增加的认识,软件开发人员需要新的方法来利用它们。尽管OS X和iOS等操作系统能够并行运行多个程序,但大多数程序都是在后台运行并执行几乎不需要连续处理时间的任务。当前的前台应用程序既捕获用户的注意力,又使计算机繁忙。如果一个应用程序有很多工作要做,但只占用一小部分可用内核,那么这些额外的处理资源将被浪费。
过去,将并发性引入到应用程序中需要创建一个或多个附加线程。不幸的是,编写线程代码具有挑战性 线程是一个必须手动管理的低级工具。考虑到应用程序线程的最佳数量可以根据当前的系统负载和底层硬件动态地改变,那么实现正确的线程化解决方案即使不是不可能实现也是非常困难的。另外,通常与线程一起使用的同步机制增加了软件设计的复杂性和风险,而没有提高性能的任何保证。
OS X和iOS对执行并发任务采用比传统上在基于线程的系统和应用程序中更为异步的方法。应用程序只需要定义特定的任务,然后让系统执行它们,而不是直接创建线程。通过让系统管理线程,应用程序获得了原始线程无法实现的可伸缩性级别。应用程序开发人员也可以获得更简单,更高效的编程模型。
本文档描述了您应该用于在应用程序中实现并发的技术和技术。本文档中描述的技术在OS X和iOS中均可用。