• dispatch_async & dispatch_sync



    博客搬家咯~ http://joeleee.github.io/

    博客搬家咯~ http://joeleee.github.io/

    博客搬家咯~ http://joeleee.github.io/

    Clear that!

    dispatch_async 是将block发送到指定线程去执行,当前线程不会等待,会继续向下执行。

    dispatch_sync 也是将block发送到指定的线程去执行,但是当前的线程会阻塞,等待block在指定线程执行完成后才会继续向下执行。

    所以为什么 dispatch_sync 使用不当时,容易对当前线程造成死锁就容易分析了~

    dispatch_sync 和 dispatch_async 将block加入到指定线程中后,指定线程都是串行执行的,既FIFO。 所以说 dispatch_sync(queue, ^{}); 这句代码还是有意义的~ 会阻塞当前线程等待queue中的所有任务执行完成后再向下执行。

    不过暂时俺还没有碰到有必要使用 dispatch_sync 的地方, 看了网上说的 “数据库需要并发I/O的时候dispatch_sync” ,还是不大了解是什么个场景~ 期待大神点拨。。。

    本文理解有误,看这里吧:http://joeleee.github.io/2017/02/21/%E6%89%92%E4%BA%86%E6%89%92libdispatch%E6%BA%90%E7%A0%81/

  • 相关阅读:
    LINQ -2015-04-27
    wireshark的安装
    c#中的classes和objects一些知识【1】
    初学C#,用vs去开始hello world!
    file_get_contents HTTP request failed! Internal Server Error
    验证码二(验证码使用)
    接口调用 POST
    接口调用 GET方式
    百度地图改标注样式
    Linux-常用命令
  • 原文地址:https://www.cnblogs.com/zhuocheng/p/3596474.html
Copyright © 2020-2023  润新知