美文网首页
dispatch_sync 在主队列执行会阻塞的原因

dispatch_sync 在主队列执行会阻塞的原因

作者: Dan_ | 来源:发表于2017-09-19 18:31 被阅读14次

dispatch_sync(dispatch_get_main_queue(), ^{

NSLog(@"阻塞");

});

dispatch_sync直到里面的block返回,它才会返回。

dispatch_async则是不等block返回就直接返回了。

由于mainqueue 在等待dispatch_sync的返回,而dispatch_sync必须要等block执行完才返回。在串行队列中block得不到执行。从而造成了阻塞

相关文章

  • dispatch_sync 在主队列执行会阻塞的原因

    dispatch_sync(dispatch_get_main_queue(), ^{ NSLog(@"阻塞");...

  • GCD底层

    一、同步执行dispatch_sync 1.1 锁的原因 我们都知道,当使用dispatch_sync在串行队列上...

  • 2018 多线程

    1. dispatch_async/dispatch_sync dispatch_sync: 同步/阻塞当前的...

  • GCD异步并发队列内加入同步任务的执行顺序

    原因猜想: -- 异步并发队列 中加入同步任务-- 同步任务会占用并阻塞当前线程(打印AAAA)-- 当同步任务执...

  • GCD死锁

    GCD死锁原因 GCD死锁的原因是队列阻塞,而不是线程阻塞! 串行和并行 串行和并行都是相对于队列而言的-队列(负...

  • GCD分析(中)

    同步函数死锁 死锁现象 主线程因为同步函数的原因等着先执⾏任务 主队列等着主线程的任务执⾏完毕再执⾏⾃⼰的任务 主...

  • 并发编程之并发队列

    常见的并发队列有2种:阻塞队列和非阻塞队列。阻塞队列使用锁实现,非阻塞队列使用CAS非阻塞算法实现。这2种队列都是...

  • 探讨阻塞队列和线程池源码

    阻塞队列 非阻塞队列是一个先进先出的单向队列(Queue),而BlockingQueue阻塞队列实际是非阻塞队列的...

  • 多线程开发中的一些基本概念的理解

    进程、线程、队列(串行队列、并行队列)、同步(dispatch_sync)、异步(dispatch_async)、...

  • 阻塞队列(一)(BlockingQueue)

    阻塞队列概要 阻塞队列与我们平常接触的普通队列(list)最大的不同点,在于阻塞队列支持阻塞添加和阻塞删除方法。 ...

网友评论

      本文标题:dispatch_sync 在主队列执行会阻塞的原因

      本文链接:https://www.haomeiwen.com/subject/razlkxtx.html