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 线程,则不会开线程,而是使用线程。

上一篇下一篇

猜你喜欢

热点阅读