
先来说⼀个队列和任务:
队列分为串⾏和并⾏
任务的执⾏分为同步和异步
这两两组合就成为了串⾏队列同步执⾏,串⾏队列异步执⾏,并⾏队列同步执⾏,并⾏队列异步执⾏⽽异步是多线程的代名词,异步在实际引⽤中会开启新的线程,执⾏耗时操作。
那我们先来知道⼀个⾮常重要的事情:
队列只是负责任务的调度,⽽不负责任务的执⾏
任务是在线程中执⾏的
队列和任务的特点:
队列的特点:先进先出,排在前⾯的任务最先执⾏,
串⾏队列:任务按照顺序被调度,前⼀个任务不执⾏完毕,队列不会调度
并⾏队列:只要有空闲的线程,队列就会调度当前任务,交给线程去执⾏,不需要考虑前⾯是都有任务在执⾏,只要有线程可以利⽤,队列就会调度任务。
主队列:专⻔⽤来在主线程调度任务的队列,所以主队列的任务都要在主线程来执 ⾏,主队列会随着程序的启动⼀起创建,我们只需get即可
全局队列:是系统为了⽅便程序员开发提供的,其⼯作表现与并发队列⼀致,那么全 局队列跟并发队列的区别是什么呢?
- 全局队列:⽆论ARC还是MRC都不需要考录释放,因为系统提供的我们只需要get就可以了
- 并发队列:再MRC下,并发队列创建出来后,需要⼿动释放dispatch_release()
同步执行:不会开启新的线程,任务按顺序执⾏
异步执行:会开启新的线程,任务可以并发的执⾏