美文网首页
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(创建和管理线程)

    开发者要做的只是定义想执行的任务并追加到适当的 Dispatch Queue 中, 本文介绍了GCD的(创建和管理...

  • 多线程(二) ---> GCD的理解与使用

    1. GCD的特点 GCD会自动利用更多的CPU内核 GCD自动管理线程的生命周期(创建线程,调度任务,销毁线程...

  • 多线程之1-GCD(DispatchQueue)

    GCD的特点 GCD会自动利用更多的CPU内核 GCD自动管理线程的生命周期(创建线程,调度任务,销毁线程等) 只...

  • GCD

    GCD的好处: 1.GCD是基于C语言的封装3,充分利用了CPU的多核心,节省内存 2.自动管理线程的生命周期(创...

  • GCD 之队列(Dispatch queue)

    GCD(Grand Central Dispatch) 介绍 GCD 属于系统级的线程管理,在 Dispatch ...

  • GCD的基本使用

    GCD 多核编程、自动管理线程的生命周期(创建线程,调度任务,销毁线程) 一、GCD 的【任务】与【队列】 1.任...

  • 多线程之GCD

    GCD(Grand Central Dispatch) 介绍 GCD属于系统级的线程管理,在Dispatch qu...

  • iOS 多线程

    iOS 多线程 多线程方案 pthread C语言 程序员管理线程NSThread OC 程序员管理GCD 用来...

  • GCD基础篇

    GCD全称是Grand Central Dispatch,大中央调度,是系统级的线程管理。GCD源码首先附上GCD...

  • 线程的创建和控制

    线程的创建和控制 进程和线程的关系:进程提供资源,线程使用资源完成工作 创建线程函数 线程的控制 更多的API 创...

网友评论

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

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