深入理解Grand Central Dispatch与后台处理
1. 主线程与多线程编程挑战
在iOS应用开发中,默认情况下,所有操作都在主线程中进行,比如处理用户事件触发的操作。对于简单应用,这通常无需过多担忧,因为用户触发的操作方法本身就在主线程中运行。
然而,编写无错误的多线程代码对于普通程序员来说几乎是不可能的。在多线程间同步数据和操作时,代码中需要处理的复杂交互超出了大多数人的能力范围。据估计,只有约5%的人具备编写软件的能力,而在这5%中,只有一小部分人能够胜任编写重型多线程应用的任务。
幸运的是,我们可以利用一些软件抽象来实现并发,而无需进行过多底层的线程操作。苹果鼓励我们采用的解决方案是将长时间运行的任务拆分为工作单元,并将这些单元放入队列中执行。系统会为我们管理队列,在多个线程上执行工作单元,我们无需直接启动和管理后台线程,也无需处理多线程应用中常见的大量记录工作。
2. Grand Central Dispatch(GCD)简介
GCD是一种强大的技术,它允许将工作单元放入队列中在后台执行,系统会自动管理线程。这项技术最早在OS X上推出,随后也应用到了iOS平台。它不仅适用于Objective - C,还支持C和C++。
GCD将工作单元、轻松的后台处理和自动线程管理等概念集成到一个C接口中,并且苹果将其实现开源,使其可以移植到其他类Unix操作系统。
GCD的关键概念之一是队列。系统提供了一些预定义的队列,其中包括一个保证始终在主线程上工作的队列,这对于非线程安全的UIKit非常适用。我们也可以根据需要创建自己的队列。GCD队列遵循严格的先进先出(FIFO)原则,添加到队列
超级会员免费看
订阅专栏 解锁全文
56

被折叠的 条评论
为什么被折叠?



