一、进程、线程
1,进程
(1)、系统启动一个应用程序就是开启一个进程,与Android一个应用可能有多个进程,ios的中一个应用程序运行只有一个进程。
(2)、进程会开辟一块独立的内存空间,该内存空间被保护,不做申请不得访问该内存空间
(3)、代码中进程是由UIApplication管理的,跨进程访问与URL Schemes和info.plist中设置白名单有关
2,线程
(1)、线程依赖进程存在,且一个进程至少持有一个线程,例如刷新UI的主线程
(2)、线程是CPU最小调度单元
(3)、线程的作用就是执行App中的功能代码,进程中所有任务都是通过线程来执行完成的
(4)、线程独立运行,一个线程不知道其他线程具体执行内容
(5)、多线程并行时,线程有着优先级,优先级低的多线程时可能被挂起,方便其他线程执行
(6)、一个线程同时执行多个任务,只能顺序执行。因为同一时间一个线程只能执行一个任务
3,进程和线程的联系
(1)、进程负责整个App生命周期,线程负责这个进程中功能的实现
(2)、进程负责开辟独立内存,线程们可以分享使用这块内存空间
二、队列、同步&异步、并行&串行
1,队列
队列是用来保存管理任务的,日常开发中经常用到队列和线程结合使用,就是线程去队列中取任务进行执行
队列主要分为:串行队列,并行队列,主队列,串行队列和并行队列里面又分同步异步
2,同步、异步
同步和异步决定了要不要开启新的线程
同步:在当前线程中执行任务,不具备开启新线程的能力
异步:在新的线程中执行任务,具备开启新线程的能力
3,并行、串行
并发和串行决定了任务的执行方式
并行:多个任务并发(同时)执行,异步是多个任务并行的前提
串行:一个任务执行完毕后,再执行下一个任务
参考链接https://www.jianshu.com/p/68b274548069
参考链接https://blog.csdn.net/u010231453/article/details/53542672