多线程编程:使用 Grand Central Dispatch
在任何环境中进行多线程编程的想法一开始可能会让人望而生畏,但苹果推出了一种新方法,让多线程编程变得容易许多。Grand Central Dispatch(GCD)包含语言特性、运行时库和系统增强功能,为 iOS 和 macOS 多核硬件上的并发代码执行提供了全面的系统支持。
1. 开发挑战
如今开发者面临的一大挑战是编写能够响应用户输入执行复杂操作,同时保持响应性的软件,避免用户在处理器执行后台任务时一直等待。尽管计算技术不断进步,CPU 速度越来越快,但这个问题仍然存在。很多时候,我们在使用电脑时,工作流程会被旋转的鼠标光标打断。
造成这个问题的一个原因是软件通常按顺序执行事件序列编写。这种软件随着 CPU 速度提升能在一定程度上扩展性能,但一旦程序等待外部资源(如文件或网络连接),整个事件序列就会暂停。现代操作系统允许程序使用多线程,即使单个线程等待特定事件,其他线程仍可继续运行。然而,许多开发者认为多线程编程神秘莫测,因而避之不及。
2. 创建 SlowWorker 应用程序
为了演示 GCD 的工作原理,我们将创建 SlowWorker 应用程序。它有一个简单的界面,由一个按钮和一个文本视图驱动。点击按钮,会立即启动一个同步任务,使应用程序锁定约十秒钟。任务完成后,文本视图会显示一些文本。
创建步骤如下:
1. 创建项目 :在 Xcode 中使用单视图应用程序模板创建一个新应用程序,命名为 SlowWorker,将设备设置为通用,然后保存项目。
2. 修改代码