主线程与主队列
1. 主线程为什么会一直存活?
线程是cup资源调度的最小单位,iOS应用当程序启动时系统默认会为我们开启一条主线程,主线程也被称为UI线程主要由于UI页面的更新,一般线程执行任务完成将会退出。那么为什么主线程能不断的响应用户操作进行任务的处理呢?这得益于主线程还会默认开启自己的Runloop。
2. iOS中的队列
在iOS中队列分为串行队列、并发队列。
- 串行队列特点是在串行队列中的任务串行执行;
- 并发队列中的任务可以并发执行。
3. iOS中任务的执行方式
- syn同步执行任务,会阻塞队列,不具备开启线程的能力;
- asyn异步执行,不会阻塞队列,具备开启新线程的能力。
4. 主队列
iOS中主队列其实就是一个串行队列,当我们调用dispatch_asyn(dispatch_get_main_queue(),^{...})时,其底层实现会将我们的block任务存放到主队列队尾,然后继续执行当前任务直至当前任务结束,在查看主队列里是否有其他未执行任务有则去处理,从而实现任务的异步执行。