iOS开发之多线程(1)—— 概述
概述
本系列文章将讨论iOS中以下几种多线程编程方式:
编程方式 | 语言 | 描述 | 出场率 | 线程周期 |
---|---|---|---|---|
Thread | OC/Swift | 轻量级, 简单易用 | 中 | 手动管理 |
GCD | C | 可充分利用设备的多核 | 高 | 自动管理 |
Operation | OC/Swift | 基于GCD封装, 添加了一些实用方法 | 高 | 自动管理 |
Pthreads | C | 可跨平台使用 | 低 | 手动管理 |
进程(Process) 和 线程(Thread)
何为进程?
进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程, 是操作系统进行资源分配和调度的一个独立单位, 是应用程序运行的载体. 进程是一种抽象的概念, 从来没有统一的标准定义. iOS中, 一个App就是一个进程.
为何进程可以并行运行?
CPU执行代码都是顺序执行的, 但由于系统可以让各个进程(应用程序)快速地交替执行, 使得各个进程看起来是同时运行的. 只有多核CPU才能真正实现多个进程同时运行.
为何要线程?
随着计算机的发展, 对CPU的要求越来越高,进程之间的切换开销较大,已经无法满足越来越复杂的程序的要求了. 上帝说要有线程, 于是就有了线程.
何为线程?
线程是程序执行中一个单一的顺序控制流程, 是CPU调度和分派的基本单位, 它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
线程是进程的一部分, 一个进程中至少有一个线程.
为何线程可以并行运行?
和进程一样, 也是由于CPU在任务调度间快速切换.
主要区别?
进程是操作系统进行资源分配和调度的基本单位; 线程是CPU调度和分派的基本单位.
一图以蔽之(图片来源):