主队列 同步执行崩溃原因

dispatch_queue_t queue = dispatch_get_main_queue();

dispatch_sync(queue, ^{
        NSLog(@"task1---------%@", [NSThread currentThread]);
    });

 NSLog(@"end");

为啥走不到 end呢?
原因解释

主队列对应的主线程, 首先按顺序执行dispatch_sync, 走到 dispatch_sync的时
候, 这一步又添加了一个 task1 的输出任务到主队列中, 这时的task1 要想执行,
必须等待 dispatch_sync 执行完成 (因为主队列是串行队列, 任务必须按顺序执行) ,

但是问题又来了, 按照程序的执行方式, dispatch_sync要想执行完成, 必须先要执行 task1, 才能回调出去, 完成dispatch_sync任务.

所以, 相互等待造成死锁, 不能到达end了.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容