2024年4月19日发(作者:)
iOS开发入门之后终究是要接触多线程和runloop的,本片文章就简单讲下iOS
开发中的多线程技术。
线程、进程
什么是线程、进程
有的人说进程就像是人的脑袋,线程就是脑袋上的头发(谁这么说的?打死他!)。
其实这么比方不算错,但是更简单的来说,用迅雷下载文件,迅雷这个程序就是
一个进程,下载的文件就是一个线程,同时下载三个文件就是多线程。一个进程
可以只包含一个线程去处理事务,也可以有多个线程。
多线程的优点和缺点
多线程可以大大提高软件的执行效率和资源(CPU、内存)利用率,因为CPU
只可以处理一个线程(多核CPU另说),而多线程可以让CPU同时处理多个任
务(其实CPU同一时间还是只处理一个线程,但是如果切换的够快,就可以了
认为同时处理多个任务)。但是多线程也有缺点:当线程过多,会消耗大量的
CPU资源,而且,每开一条线程也是需要耗费资源的(iOS主线程占用1M内
存空间,子线程占用512KB)。
iOS开发中的多线程
iOS程序在启动后会自动开启一个线程,称为 主线程 或者 UI线程 ,用来显示、
刷新UI界面,处理点击、滚动等事件,所以耗费时间的事件(比如网络、磁盘
操作)尽量不要放在主线程,否则会阻塞主线程造成界面卡顿。
iOS开发中的多线程实现方案有四种:
生命周
期管理
技术方案 简介 语言
技术方案 简介 语言
生命周
期管理
一套通用的多线程API,适用于
pthread UnixLinuxWindows等系统,跨平台可移C
植,使用难度大
程序员
管理
NSThread
使用更加面向对象,简单易用,可直接操作线
Objective-C 手动实
程对象
例化
旨在替代NSThread等线程技术,充分利用
设备的多核
自动管
理
程序员
GCD C
基于GCD(底层是GCD),比GCD多了一自动管
NSOperation Objective-C
些更简单实用的功能,使用更加面向对象 理
多线程中GCD我使用比较多,以GCD为例,多线程有两个核心概念:
1. 任务 (做什么?)
2. 队列 (存放任务,怎么做?)
任务就是你开辟多线程要来做什么?而每个线程都是要加到一个队列中去的,队
列决定任务用什么方式来执行。
线程执行任务方式分为:
1. 异步执行
2. 同步执行
同步执行只能在当前线程执行,不能开辟新的线程。而且是必须、立即执行。而
异步执行可以开辟新的线程。


发布评论