dispatch_async表示异步操作,异步操作<b>会新开辟线程</b>来执行任务,而且无法确定任务的执行顺序
dispatch_sync表示同步操作,同步操作<b>不会开辟新线程</b>
在串行队列中执行同步任务:不会新建线程,按顺序执行任务(毫无用处)
在串行队列中执行异步任务,会新建线程,按顺序执行任务(非常有用)
在并行队列中执行同步任务:不会新建线程,按顺序执行任务(几乎没用)
在并行队列中执行异步任务:会新建多个线程,但是无法确定任务的执行顺序(有用,但是很容易出错)
全局队列:
全局队列是系统的,直接拿过来就可以用,与<b>并行队列</b>类似,但是不能指定队列的名字,调试时无法确认任务所在队列
在全局队列中执行同步任务:不会新建线程,按顺序执行任务
在全局队列中执行异步任务:会新建多个线程,但是无法确定任务的执行顺序
主队列:
每一个应用程序只有一个主线程即只有一个主队列
为什么需要再主线程上执行任务呢?因为在ios开发中,所有UI的更新任务都必须在主线程上执行。
主队列中的操作都是在主线程中执行的,不存在异步的概念
主队列中添加的同步操作永远不会被执行(会死锁)