给自己--GCD小纪

作者: 掉了西红柿皮_Kee | 来源:发表于2016-09-21 11:15 被阅读26次
  • 0:摘自苹果官方的说明:Grand Central Dispatch(GCD)是异步执行任务的技术之一。还有一句更为给力的说明:开发者要做的只是定义想执行的任务并追加到适当的Dispatch Queue中。
    也就是像这样:
dispatch_async(queue,^{
//something want to do
});

上述的源代码使用Block语法“定义想执行的任务”,通过dispatch_async函数“追加”赋值在变量queue的“Dispatch Queue中”。这样就可以似的指定的Block在另外一条线程中执行。

  • 1:“Dispatch Queue”意如其名--执行处理的等待序列。我们可以通过dispatch_async函数等API,在Block语法中记述想执行的处理并追加到Dispatch Queue中。此队列会按照追加的顺序:FIFO执行处理。
    另:在执行处理的时候存在两种队列:Serial Dispatch Queue(串行队列)和Concurrent Dispatch Queue(并行队列)。
  • 2:Serial Dispatch Queue:等待现在执行中的处理结束方可顺序执行下一个。它使用的是一个线程。是一对一的关系。与Serial Dispatch Queue不同的是,Concurrent Dispatch Queue:不等待现在执行中的处理结束,可以并行执行多个处理,但并行执行的处理数量取决于当前系统的状态。所谓“并行执行”就是使用多个线程同时执行多个处理。是一对多的关系。Concurrent Dispatch Queue在执行处理时,执行顺序会根据处理内容和系统的状态发生改变。并不能像Serial Dispatch Queue固定顺序的执行。
  • 3:至于系统当前使用的线程数,是由iOS和OSX的核心---XNU内核决定的,并只生成所需的线程执行处理。当处理结束,需要执行的处理数量减少的时候,XNU内核会结束不再需要的线程。
  • 4:通过GCD的API生成Dispatch Queue
    dispatch_queue_create("queue",NULL).生成Serial Dispatch Queue。
    dispatch_queue_create("queue",DISPATCH_QUEUE_CONCURRENT).生成Concurrent Dispatch Queue。当然有创建就有管理,和OC的引用计数式内存管理一样,需要通过dispatch_retain 和 dispatch_release函数的引用计数来管理内存。
  • 5:直接获取系统标准提供的Dispatch Queue
    Main Dispatch Queue 在主线程执行的dispatch queue,为Serial Dispatch Queue。追加到Main Dispatch Queue的处理在主线程的RunLoop中执行。
    dispatch_queue_t mainQueue = dispatch_get_main_queue();
    Global Dispatch Queue 是所有应用程序都能使用的Concurrent Dispatch Queue,对于这个队列有四个优先级,在获取的时候可以依据需要进行选择。

未完。。

相关文章

  • 给自己--GCD小纪

    0:摘自苹果官方的说明:Grand Central Dispatch(GCD)是异步执行任务的技术之一。还有一句更...

  • 2022-09-25

    纪小俊是指导灵哥哥 纪小俊是指导灵哥哥 纪小俊是指导灵哥哥 纪小俊是指导灵哥哥 纪小俊是指导灵哥哥 纪小俊是指导灵...

  • GCD 小总结

    简介:GCD是对多线程、多核开发较完整的封装。在使用GCD的时候,系统会自动根据CPU使用情况进行调度,所以GCD...

  • GCD小总结

    单例模式 串行队列同步/异步执行任务 并发队列同步/异步执行任务 队列组 延时执行 barrier

  • GCD 小笔记

    下面是学习GCD的一些小笔记,先记下来,到时候忘了还可以再回顾回顾。 Dispatch Async 耗时任务在其它...

  • 小纪

    这几天感觉慢慢走上正轨了,学习上也对行测进行了学习,对股票上也有了新的认识。和对自己的一些缺陷有了一定的了解。慢慢...

  • 小纪

    又快两周没码字了。 不是没写,而是我思考了自己的文章不能再自说自话。一直绕在自嗨的世界走不出来,我想突破,试着走出...

  • 小纪

    不知不觉,我已经在大学里度过了三个月,这也就意味着,悄然之中,大一的第一个学期也快要画上句号。 在没踏入大学校门之...

  • 小纪

    暂停了一周。 其实每天都有写日记,只是在心里写了很多。闭上眼睛就会开始说话,会整理一天的七七八八,然后和自己说晚安...

  • 小纪。

    不止一次听说,大学是一个小型社会。 而自身切实体会过的时候,才会真正明白这个真理。 自从踏入这个校门,在欣喜的同时...

网友评论

    本文标题:给自己--GCD小纪

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