进程
什么是进程:在我们的系统中正在运行的程序
进程的作用:负责给应用程序分配内存空间(该空间是受保护的,独立的)
线程
什么是线程:线程是CPU调度的最小单元,由CPU调度
线程的作用:负责执行应用程序中的代码,在系统中运行着的程序的代码只能由线程执行
线程创建过程:应用程序在启动过程中,系统会自动创建默认的线程,也就是程序的主线程/UI线程
线程与进程之间的关系:一个进程至少有一个线程(即主线程),一个进程中可以有多个线程
主线程的主要作用
a、显示\刷新UI界面
b、处理UI事件(比如点击事件、滚动事件、拖拽事件等)
主线程相关用法
+ (NSThread *)mainThread; // 获得主线程
- (BOOL)isMainThread; // 是否为主线程
+ (BOOL)isMainThread; // 是否为主线程
开发原则:1、比较耗时的操作都放到子线程中(一般是在进行网络请求的时候,或者是执行时间不可控的时候)
2、UI操作、与用户交互的代码都放到主线程中,其一是因为为了保证用户操作的流程性,其二是因为所有的UI控件都在UIKIT框架中,而UIKIT框架采用的就是这种机制,苹果公司也推荐这种用法,都是非线程安全的,为了保证正确,将所有的用户交互的代码放到主线程中,而单一的线程是按顺序执行的,所以就避免了非线程安全的问题
线程内的代码的执行顺序:
串行执行:同一线程中,该线程中的任务代码按顺序执行,同一时间只能执行一块代码
并发执行:一个进程可以创建多个子线程,在不同的线程中,任务同时执行(其实是一种假象,是因为CPU的调度速度非常快速,所以感觉是一起执行的)(即多线程)
并行执行:真正的同时执行,由多个CPU同时执行