GCD 同步+串行和同步+主队列的疑惑

gcd详解转发


新的读者可能在 同步执行+串行队列 与 同步执行+主队列 (前者可以正常执行,后者产生死锁)会产生疑问

两者的相同地方则都是同步执行不具备开启线程的能力,可以理解为只有一条线程(主线程);

但是例如链接里面的例子- (void)syncMain{};这个方法可以想成是加载到了主线程的主队列里(主队列也是串行队列);其他方法同理;这里说的方法不是方法里的“任务”;

当 同步执行+主队列 这种模式下启动任务时,相当于把任务一又给添加到了主队列里,而且主队列是同步执行,也就相当于syncMain方法在主队列里执行的时候又给主队列加了一个新的任务(任务一),新加的任务一需要syncMain方法完事之后在执行,可syncMain也在等待任务一执行,所以造成了相互等待(死锁);

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容