美文网首页
第三章 3.2.1 Dispatch Queue

第三章 3.2.1 Dispatch Queue

作者: MrSYLong | 来源:发表于2018-07-25 21:48 被阅读7次

    3.2.1 Dispatch Queue
    苹果官方对GCD的说明:
    开发者要做的只是定义想要执行的任务并追加到适当的Dispatch Queue中。

    dispatch_async(queue, ^{
            
            /* 想执行的任务 */
        });
    说明:使用Block语法“定义想要执行的任务”,通过dispatch_async函数“追加”赋值到变量queue的“Dispatch Queue”中,Block中想执行的任务,就在另一线程中执行了。
    

    问题一、Dispatch Queue是什么?
    Dispatch Queue是执行处理任务的等待队列,通过Block语法将想要执行的任务追加到Dispatch Queue中,它会按照追加的顺序执行处理。

    问题二、Dispatch Queue的种类?
    1、Serial Dispatch Queue:等待现在执行中的任务处理结束,使用一个线程,一个任务处理结束,下一个任务才开始执行。
    2、Concurrent Dispatch Queue:不等待现在执行中的任务处理结束,使用多个线程,一个任务开始执行后,不管是否结束,下一个任务就开始执行。

    问题三、Concurrent Dispatch Queue并行执行的处理数?
    Concurrent Dispatch Queue不用等待任务处理结束,可并行执行多个处理,并行执行的处理数由CPU核数以及CPU负荷等当前系统的状态决定。

    问题四、线程数?
    iOS和OS X的核心—XNU内核决定当前使用的线程数,只生成所需的线程执行处理。处理结束,处理数减少,XNU内核结束不在需要的线程。

    总结:
    在不能改变执行的处理顺序或不想并行执行多个处理时使用Serial Dispatch Queue。
    Concurrent Dispatch Queue执行处理时,执行顺序会根据处理内容和系统状态发生改变,所以执行顺序不是固定的。

    问题五、如何得到Dispatch Queue?
    方法有两种,见3.2.2、3.2.3

    相关文章

      网友评论

          本文标题:第三章 3.2.1 Dispatch Queue

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