美文网首页
GCD(创建和管理线程)

GCD(创建和管理线程)

作者: _涼城 | 来源:发表于2016-07-12 12:13 被阅读151次

    开发者要做的只是定义想执行的任务并追加到适当的 Dispatch Queue 中,

    本文介绍了GCD的(创建和管理线程).


    Creating and Managing Queues(创建和管理线程)

    1.返回与应用程序的主线程关联的串行调度队列。主队列是由系统自动创建的,并与应用程序的主线程关联的。

    dispatch_queue_t dispatch_get_main_queue(void);

    2.返回一个全局并发队列

    dispatch_queue_t dispatch_get_global_queue( long identifier, unsigned long flags);

    3.创建一个新的调度队列

    dispatch_queue_t dispatch_queue_create( const char *label dispatch_queue_attr_t attire);

    Parameters

    label

    标识符,此参数是可选的,可以是空的。

    attr

          在OS X v10.7或以后或iOS 4.3后,指定dispatch_queue_serial(或空)创建一个串行队列或指定创建并发队列dispatch_queue_concurrent。在较早的版本中,您必须指定此参数的空值。

    4.返回当前正在运行的正在运行的块的队列

    dispatch_queue_t dispatch_get_current_queue( void);

           此函数被定义为不返回空值。当从已提交的块的上下文外部调用时,该函数返回主队列,如果调用是从主线程执行的。如果调用是由任何其他线程调用的,这个函数将返回默认的并发队列。

    5.返回创建队列时指定的队列的标签。

    const char * dispatch_queue_get_label(dispatch_queue_t queue);

    6.设置给定对象的目标队列。

            dispatch_queue_create 函数生成的 Dispatch Queue 都使用与默认优先级 Global Dispatch Queue 相同执行优先级的编程。而变更优先级要使用以下函数:

    void dispatch_set_target_queue( dispatch_object_t object, dispatch_queue_t queue);

    例,在后台执行动作处理的 Serial Dispatch Queue 的生成方法如下:

    dispatch_queue_t my SerialDispatchQueue =

             dispatch_queue_create("com.example.gcd.MySerialDispatchQueue",NULL);

    dispatch_queue_t  globalDispatchQueueBackground = 

            dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0);

    dispatch_set_target_queue(mySerialDispatchQueue,globalDispatchQueueBackground)

          指定要变更的 Dispatch Queue 为 dispatch_set_target_queue 的第一个参数,指定要使用的执行优先级相同优先级的 Global Dispatch Queue 作为第二个参数。

         它不仅可以改变执行优先级,还可以作成 Dispatch Queue 的执行阶层。在多个 Serial Dispatch Queue 中用 它指定目标为某一个 Serial Dispatch Queue,那么原先本应执行的多个 Serial Dispatch Queue,在目标 Serial Dispatch Queue 上只能同时执行一个处理。

        在必须将不可并行执行的处理追加到多个 Serial Dispatch Queue 中,如果使用 dispatch_set_target_queue 函数将目标指定为某一个 Serial Dispatch Queue,即可防止处理并行执行。


    相关文章

      网友评论

          本文标题:GCD(创建和管理线程)

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