关于gcd

作者: Jack_deng | 来源:发表于2017-05-11 11:14 被阅读0次

这几天有点时间,就把gcd研究了一下。现把心得和笔记记录如下

gcd常用的api,dispatch_queue_create, 主队列和全局并发队列,dispatch_set_target_queue,dispatch_after,dispatch group,dispatch_barrier_async,dispatch_sync,dispatch_apply,dispatch_suspend/dispatch_resume,dispatch semaphore,dispatch_once,dispath I/O,熟悉gcd常用的api的使用,并清楚知道其适用的业务场景。以前对gcd信号量只是处于了解,这次花了一些时间研究后才算掌握了。同时以前对gcd死锁没有做到透彻的理解,只是一知半解,这次也是完全搞通了。

死锁的心得:死锁的生活中的例子,ABC 3个好朋友一起去车站,来了一辆公交车,结果A说,让B先上车,我紧接着他后面上车;B说,让C先上车,我紧接着他后面上车;C说,让A先上车,我紧接着他后面上车。。所以3个人就永远在互相等另一个人,永远上不了车。。现实中只要A,B,C随便一个人先上车就会打破僵局。但是程序很傻,程序一定会遵守规则,这就是死锁。我的这个例子是现实的例子,更详细的请看这篇文章,我觉得是gcd死锁最好的文章:www.jianshu.com/p/bbabef8aa1fe  。

以前就觉得dispatch_once很牛逼,用它实现单例比static实现单例牛逼几条街,一直想弄明白它是怎么实现的。这次刚好有时间,就研究了一下dispatch_once的实现。参考的文章如下:www.dreamingwish.com/articlelist/tag/gcd

同时对gcd的底层实现有了一些理解,参考资料为上面的链接和Objective-C高级编程的gcd章节,gcd是在iOS和OSX的核心XNU内核级上实现的。gcd中除了dispatch queue外,还有dispatch source,它其实是BSD系内核惯有功能kqueue的包装。dispatch queue提供了暂停和继续api,但是一旦加到队列中,就无法取消。而NSOperationQueue是可以取消的。。dispatch source是可以取消的。。

相关文章

  • GCD基础篇 - 同步、异步,并发、并行的理解

    1、关于GCD - GCD全称是Grand Central Dispatch -GCD是苹果公司为多核的并行...

  • iOS多线程,GCD的了解及实现

    什么是GCD,关于GCD的简单概念 其实多线程这个东西,GCD(Grand Central Dispatch),纯...

  • GCD的使用-让面试简单点

    关于GCD: GCD全称Grand Central Dispatch GCD是苹果公司为多核的并行运算提...

  • NSOperation与网络封装(上)

    关于NSOperation 基于GCD,NSOperation是一个基于GCD封装的类。 Command,通过NS...

  • 关于gcd

    这几天有点时间,就把gcd研究了一下。现把心得和笔记记录如下 gcd常用的api,dispatch_queue_c...

  • 关于GCD

    笔者也是在边学习边整理,有不对的地方欢迎指出 GCD的两种类型:(1)并发队列(Concurrent Dispat...

  • 关于GCD

    文顶顶的博客(关于GCD) 相关的概念: 核心要区分同步异步和串行并行的区别 1.任务:即程序要做的事情(在GCD...

  • Swift3使用GCD和DispatchQueues关于gcd

    关于对gcd 的使用,有几个链接写的还是相当不错的。Swift3使用GCD和DispatchQueueshttp:...

  • iOS GCD的使用

    关于GCD(Grand Central Dispatch): 苹果官方对GCD是这样说明的:开发者要做的只是定义想...

  • GCD整理(一)

    整理一篇关于GCD的文章,自己以后要复习的时候也方便。 GCD(Grand Center Dispatch)异步执...

网友评论

      本文标题:关于gcd

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