GCD是否创建线程总结
2020-06-28 本文已影响0人
坚持_d49e
首先同步函数不具备开启线程的能力,无论是什么队列都不会开启线程;异步函数具备开启线程的能力,开启几条线程由队列决定(串行队列只会开启一条新的线程,并发队列会开启多条线程)
同步函数dispatch_sync
(1)并发队列:不会开线程
(2)串行队列:不会开线程
异步函数 dispatch_async
(1)并发队列:能开启N条线程
(2)串行队列:开启1条线程
注意:异步不一定开线程的理解
1.在串行队列Q的任务A里异步将任务B追加到队列Q中,此时任务B和任务A在一个线程,不开线程。
2.若任务 B 追加的线程已存在,比如 main 线程,则不会开线程,而是使用线程。