*关于进程和线程,本质完全不一样。这一点在操作系统里面讲得比较详细。往往一些笔试面试题中往往喜欢问,所以在此加上自己的理解整理一下。(基本概念还是蛮重要的,所谓地基。)
目录:
* 一 基本概念理解
1 进程
2 线程
*二 进程和线程的区别和联系
*三 几个小概念的理解和区分
1 同步异步
2 并发串行
*四 同步线程 异步线程
一 基本概念理解
1 进程
进程是计算机操作系统分配资源的单位,是指系统中正在运行的一个应用程序,每个进程之间是独立的,每个进程均运行在其专受保护的内存空间内。比如同时打开qq xcode ,系统就会分别启动2个进程。
2 线程
线程是进程的基本执行单元,一个进程的所有任务都在线程中执行。
1个进程要执行任务,必须得有线程(每个进程至少要有一个线程)比如使用网易云音乐下载歌曲,需要在线程中执行。
二 进程和线程的区别和联系
1 进程和线程都是由操作系统所提供的程序运行的基本单元,系统利用该基本单元实现对应用的并发性。
2 进程和线程的主要差别在于它们是不同的操作系统资源管理方式。
3 进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中不同的执行路径。
4 线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉。所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。
5 一个线程可以创建和撤销另一个线程,同一个 进程中的多个线程之间可以并发执行。
三 几个小概念的理解和区分
1 同步异步
同步异步决定了要不要开启新的线程
同步:在当前线程中执行任务,不具备开启新线程的能力。
异步:在新的线程中执行任务,具备开启新线程的能力。
2 并发串行
并发串行 决定了任务的执行方式
并发:多个任务并发(同时)执行
串行:一个任务执行完毕后,在执行下一个任务
四 同步线程 异步线程
同步线程:串行 主线程是串行的。串行执行的任务,会把你的同步代码一行一行的执行下去
异步线程:并行执行的线程
OC中如何实现线程同步?(多线程访问统一资源的同步问题)
(1)NSLock
(2)同步块