iOS-多线程-主线程与主队列

253 阅读1分钟

主线程与主队列

1. 主线程为什么会一直存活?

线程是cup资源调度的最小单位,iOS应用当程序启动时系统默认会为我们开启一条主线程,主线程也被称为UI线程主要由于UI页面的更新,一般线程执行任务完成将会退出。那么为什么主线程能不断的响应用户操作进行任务的处理呢?这得益于主线程还会默认开启自己的Runloop。

2. iOS中的队列

在iOS中队列分为串行队列、并发队列。

  1. 串行队列特点是在串行队列中的任务串行执行;
  2. 并发队列中的任务可以并发执行。

3. iOS中任务的执行方式

  1. syn同步执行任务,会阻塞队列,不具备开启线程的能力;
  2. asyn异步执行,不会阻塞队列,具备开启新线程的能力。

4. 主队列

iOS中主队列其实就是一个串行队列,当我们调用dispatch_asyn(dispatch_get_main_queue(),^{...})时,其底层实现会将我们的block任务存放到主队列队尾,然后继续执行当前任务直至当前任务结束,在查看主队列里是否有其他未执行任务有则去处理,从而实现任务的异步执行。