同步,异步,串行,并发
同步和异步代表会不会开辟新的线程。
串行和并发代表任务执行的方式。
同步串行和同步并发,任务执行的方式是一样的。没有区别,因为没有开辟新的线程,所有的任务都是在一条线程里面执行。
异步串行和异步并发,任务执行的方式是有区别的,
异步串行会开辟一条新的线程,队列中所有任务按照添加的顺序一个一个执行,
异步并发会开辟多条线程,至于具体开辟多少条线程,是由系统决定的,但是所有的任务好像就是同时执行的一样。
开辟队列的方法:
dispatch_queue_t myQueue = dispatch_queue_create("MyQueue", NULL);
/**
参数1:标签,用于区分队列
参数2:队列的类型,表示这个队列是串行队列还是并发队列NUll表示串行队列,
DISPATCH_QUEUE_CONCURRENT表示并发队列
*/
执行队列的方法
异步执行
dispatch_async(<#dispatch_queue_t queue#>, <#^(void)block#>)
同步执行
dispatch_sync(<#dispatch_queue_t queue#>, <#^(void)block#>)
主队列
主队列:
专门负责调度主线程度的任务,没有办法开辟新的线程。
所以,在主队列下的任务不管是异步任务还是同步任务都不会开辟线程,任务只会在主线程顺序执行。
主队列异步任务:
现将任务放在主队列中,但是不是马上执行&