参考:http://www.cnblogs.com/wendingding/p/3806821.html

<<Objective-C基础教程>> 第二版

一 简介

GCD 全称是Grand Central Dispatch,可译为:”牛逼的中央调度器”。是苹果公司为多核并行运算提出的解决方案。自动管理线程的生命周期(创建线程,调度任务,销毁线程等),程序员只需要告诉GCD想要执行什么的任务,不需要编写任何线程管理代码。

1 GCD存在于libdispatch.dylib这个库中,默认加载。

2 GCD是纯C语言的,因此我们在编写GCD相关代码的时候,面对的函数,而不是方法。

3 GCD中的函数大多数都以dispatch开头。

4 属性如果没有指定nonatomic,则编译器的getter与setter方法互斥。

5 后台执行代码前缀一般是:performSelector... ,最简单的就是performSelectorInBackground:withObject

6 线程中的代码最多只能有一个参数。

二 任务与队列

GCG中有两个核心概念:任务,执行什么操作;队列,存放任务。

1 GCD中有两个执行任务的函数:

同步方式 dispatch_sync(dispatch_queue_t queue, dispatch_block_t block)

异步方式 dispatch_async(dispatch_queue_t queue, dispatch_block_t block)

区别:同步方式在当前线程中执行,异步方式在另一个线程中执行。

添加任务最简单的方法如上添加代码块,或者添加函数:

dispatch_async_f(“…”,(__bridge void *)[NSNumber numberWithInt:3],(dispatch_function_t)mydispatchFunction);

dispatch_sync_f(…)

队列的暂停与恢复:dispatch_suspend(_serial_queue);dispatch_resume(_serial_queue);

2 队列分为两大类型:

并发队列(Concurrent Dispatch Queue):可以让多个任务并发(同时)执行(自动开启多个线程同时执行任务)并发功能只有在异步(dispatch_async)函数下才有效.全局的,无需内存管理。

创建方法 dispatch_queue_t queue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);

串行队列(Serial Dispatch Queue):一个任务执行完毕后,再执行下一个任务.先入先出(FIFO).

创建方法:dispatch_queue_t queue = dispatch_queue_create(“queue”,NULL);

另:主队列:dispatch_queue_t queue = dispatch_get_main_queue();它是特殊的串行队列。

获取当前队列:dispatch_queue_t queue = dispatch_get_current_queue();

队列的内存管理:dispatch_retain(),dispatch_release(),只能用于自己创建的队列,全局队列不可用。

IOS 多线程之GCD的更多相关文章

  1. iOS多线程之GCD小记

    iOS多线程之GCD小记 iOS多线程方案简介 从各种资料中了解到,iOS中目前有4套多线程的方案,分别是下列4中: 1.Pthreads 这是一套可以在很多操作系统上通用的多线程API,是基于C语言 ...

  2. iOS 多线程之GCD的使用

    在iOS开发中,遇到耗时操作,我们经常用到多线程技术.Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法,只需定义想要执行的任务,然后添加到适当的调度队列 ...

  3. iOS多线程之GCD详解

    GCD(Grand Central Dispatch)是基于C语言开发的一套多线程开发机制.也是目前苹果官方推荐的多线程开发方法.iOS三种多线程开发中GCD是抽象层次最高的.当然用起来也是最简单的. ...

  4. iOS多线程之GCD学习笔记

    什么是GCD 1.全称是Grand Central Dispatch,可译为“牛逼的中枢调度器” 2.纯C语言,提供了非常多强大的函数 GCD的优势 GCD是苹果公司为多核的并行运算提出的解决方案 G ...

  5. (五十五)iOS多线程之GCD

    GCD的全称为Grand Central Dispatch,翻译为大中央调度,是Apple开发的一个多线程编程解决方法. 进程和线程的概念: 正在进行中的程序被称为进程,负责程序运行的内存分配,每一个 ...

  6. iOS 多线程之GCD的简单使用

    在iOS开发中,遇到耗时操作,我们经常用到多线程技术.Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法,只需定义想要执行的任务,然后添加到适当的调度队列 ...

  7. ios多线程之GCD

    介绍: Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统.这建立在任务并行执行的线程池模式的基础上的.它首 ...

  8. iOS多线程之GCD、OperationQueue 对比和实践记录

    [toc] 简介      在计算的早期,计算机可以执行的最大工作量是由 CPU 的时钟速度决定的.但是随着技术的进步和处理器设计的紧凑化,热量和其他物理约束开始限制处理器的最大时钟速度.因此,芯片制 ...

  9. iOS多线程之8.NSOPeration的其他用法

      本文主要对NSOPeration的一些重点属性和方法做出介绍,以便大家可以更好的使用NSOPeration. 1.添加依赖 - (void)addDependency:(NSOperation * ...

随机推荐

  1. Oracle Enterprise Linux 64-bit下安装apache-tomcat-7.0.53步骤

    測试环境:VMware Workstation v9.0.2软件中安装好Oracle Enterprise Linux 5.8 64-bit虚拟机 安装软件:jdk-7u40-linux-x64.rp ...

  2. jQuery 编辑div内容

    div显示如下 <div id="showResult"></div> div中添加的html,进行拼接 $("#showResult" ...

  3. c# List Sort排序

    Test test1 = new Test(); test1.sortIndex = ; test1.name = "; Test test2 = new Test(); test2.sor ...

  4. SpringMVC + ehcache( ehcache-spring-annotations)基于注解的服务器端数据缓存

    背景 声明,如果你不关心java缓存解决方案的全貌,只是急着解决问题,请略过背景部分. 在互联网应用中,由于并发量比传统的企业级应用会高出很多,所以处理大并发的问题就显得尤为重要.在硬件资源一定的情况 ...

  5. 需要设置jdk的三处位置:

    需要设置jdk的三处位置:1.tomcat需要一个JDK : Windows--->Preferences--->MyEclipse--->Servers--->Tomcat- ...

  6. JAVA Oauth 认证服务器的搭建

    http://blog.csdn.net/binyao02123202/article/details/12204411 1.软件下载 Oauth服务端: http://code.google.com ...

  7. WindowListener中的windowClosed方法不执行的问题。

    1.在正常情况下windowClosed方法不执行: 2.调用dispose方法,windowClosed方法会执行.例如:在windowClosing方法中执行dispose方法,windowClo ...

  8. Spring Boot应用的健康监控

    在之前的系列文章中我们学习了如何进行Spring Boot应用的功能开发,以及如何写单元测试.集成测试等,然而,在实际的软件开发中需要做的不仅如此:还包括对应用程序的监控和管理. 正如飞行员不喜欢盲目 ...

  9. 【转】字符编码笔记:ASCII,Unicode和UTF-8

    今天整理笔记,关于NSString转NSData时,什么时候使用NSUTF8StringEncoding,或者NSASCIIStringEncoding,或者 NSUnicodeStringEncod ...

  10. PHP学习笔记(八)

    关于PHP中的缓存函数ob_start() and ob_end_flush(). PHP输出机制:输出内容->缓存->输出到浏览器.ob_start(callback function) ...