Swift 中的多线程

2025年3月17日 | 阅读 3 分钟

多线程可以定义为一种促进 CPU 创建和执行并发线程的进程。通常,CPU 一次执行一个操作。但是,通过使用多线程,我们可以允许 CPU 在不同的任务之间切换,以便它们可以同时执行。

线程之间的切换发生得很快,因此,用户无法注意到这种变化。在 iOS 中,常见的例子是 UI 线程,因为应用程序始终坚持其用户界面,尽管 CPU 正在忙于做很多事情。这是因为多线程。

iOS 中,UI 有其线程。当我们执行复杂任务时,UI 保持不变。让我们设想一个场景,我们在后台执行一些上传任务,并在前台运行应用程序。在这里,iPhone 在两个线程之间切换得非常快,直到线程完成。在这里,我们不需要按顺序执行任务,因为 iPhone 可以在上传文件和绘制屏幕之间切换。

GCD 概念

GCD 代表 Grand-Central-Dispatch,它是一个用于在工作池上执行闭包的 API。在这里,执行以先进先出 (FIFO) 的顺序完成。

要由 CPU 执行的任务由应用程序以块的形式提交给调度队列。此块在系统提供的线程池上执行。调度队列中的所有任务都按顺序或并发执行。但是,调度队列始终保持任务的 FIFO 顺序。

此框架通过将任务提交给系统管理的调度队列,促进在多核系统上并发执行代码。

为什么要使用 GCD?

保持应用程序对用户的响应速度在现代社会是最典型的。但是,为了满足我们的要求,我们总是不断地向我们的应用程序添加新功能,这导致它变得更慢,对用户也不友好。

为了使应用程序更快、响应更快,我们可以使用 GCD 来运行应用程序线程并将信息呈现给用户。例如,如果我们正在解析一个需要 10 或 15 秒才能解析的大型 JSON 文件,那么我们总能运行一个线程,该线程可以向用户显示一个活动指示器,以便它假设正在处理一些任务。

让我们看一个例子,我们将异步地将一个任务派发到主队列。

输出

Value = 0
Value = 1
Value = 2
Value = 3
Value = 4
Value = 5
Value = 6
Value = 7
Value = 8
Value = 9
Value = 10
"printing table of 10"
10
20
30
40
50
60
70
80
90
100
9

下一个主题Swift 中的并发