iOS 多线程(一)-简介

2021-06-08  本文已影响0人  搬砖的crystal
1.进程

进程是独立运行、独立分配资源和独立接受调度的基本单位。
进程有三个基本状态。
(1)就绪状态
当进程已分配到除CPU外的所有必要资源后,只要再获得CPU,便可立即执行,进程这时的状态称为就绪状态。在系统中处于就绪状态的进程往往会有多个,通常将这些进程存入一个队列中,称为就绪队列。
(2)执行状态
进程已获得CPU,其程序正在执行。
(3)睡眠状态(阻塞状态)
正在执行的进程由于某些事件暂时无法继续执行,便放弃CPU占用转入暂停。阻塞状态的进程也会排入队列中,操作系统会根据阻塞原因的不同将处于阻塞状态的进程排入多个队列。导致阻塞的事件有:请求I/O,申请缓冲空间。

在iOS中进程通过Progress ID(进程ID,即PID)来唯一辨识。进程还会将其和父进程的亲属关系保存在父进程ID(Parent Progress ID, PPID)中。父进程可以通过fork(或通过posix_spawn)创建子进程,并且预期子进程会消亡。子进程返回的整数由其父进程收集。

2.多线程概念

线程:是进程的基本执行单元,进程想要执行任务,必须要有线程,一个进程对应一个或多个线程。
资源分配给进程,同一进程的所有线程共享该进程的所有资源。同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有自己的栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。
主线程:处理UI(其他子线程都是独立于cocoa Touch的),所有更新UI的操作都要放到主线程执行。不要把耗时操作放在主线程,会卡界面。
多线程:在同一个时刻,一个CPU只能处理一条线程,但CPU可以在多个线程之间快速切换,造成了多线程的假象。

3.进程和线程区别和联系
4.多线程状态和生命周期
多线程状态
5.iOS多线程四种方式
方案 简介 语言 线程生命周期 使用频率
pthread 一套通用的多线程API;适合用于unix/Linux/Windows等系统;跨平台、可移植;使用难度大。 C 程序员管理 几乎不用
NSThread 使用更加面向对象;简单易用,可直接操作线程对象 OC 程序员管理 偶尔使用
GCD 旨在替代NSThread等线程技术;充分利用设备的多核 C 自动管理 经常使用
NSOperation 基于GCD;比GCD多了一些更简单实用的功能;使用更加面向对象 OC 自动管理 经常使用
6.多线程的优缺点

优点:

缺点:

上一篇下一篇

猜你喜欢

热点阅读