IOS 多线程之GCD
参考: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的更多相关文章
- iOS多线程之GCD小记
iOS多线程之GCD小记 iOS多线程方案简介 从各种资料中了解到,iOS中目前有4套多线程的方案,分别是下列4中: 1.Pthreads 这是一套可以在很多操作系统上通用的多线程API,是基于C语言 ...
- iOS 多线程之GCD的使用
在iOS开发中,遇到耗时操作,我们经常用到多线程技术.Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法,只需定义想要执行的任务,然后添加到适当的调度队列 ...
- iOS多线程之GCD详解
GCD(Grand Central Dispatch)是基于C语言开发的一套多线程开发机制.也是目前苹果官方推荐的多线程开发方法.iOS三种多线程开发中GCD是抽象层次最高的.当然用起来也是最简单的. ...
- iOS多线程之GCD学习笔记
什么是GCD 1.全称是Grand Central Dispatch,可译为“牛逼的中枢调度器” 2.纯C语言,提供了非常多强大的函数 GCD的优势 GCD是苹果公司为多核的并行运算提出的解决方案 G ...
- (五十五)iOS多线程之GCD
GCD的全称为Grand Central Dispatch,翻译为大中央调度,是Apple开发的一个多线程编程解决方法. 进程和线程的概念: 正在进行中的程序被称为进程,负责程序运行的内存分配,每一个 ...
- iOS 多线程之GCD的简单使用
在iOS开发中,遇到耗时操作,我们经常用到多线程技术.Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法,只需定义想要执行的任务,然后添加到适当的调度队列 ...
- ios多线程之GCD
介绍: Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统.这建立在任务并行执行的线程池模式的基础上的.它首 ...
- iOS多线程之GCD、OperationQueue 对比和实践记录
[toc] 简介 在计算的早期,计算机可以执行的最大工作量是由 CPU 的时钟速度决定的.但是随着技术的进步和处理器设计的紧凑化,热量和其他物理约束开始限制处理器的最大时钟速度.因此,芯片制 ...
- iOS多线程之8.NSOPeration的其他用法
本文主要对NSOPeration的一些重点属性和方法做出介绍,以便大家可以更好的使用NSOPeration. 1.添加依赖 - (void)addDependency:(NSOperation * ...
随机推荐
- android selector 背景选择器的使用, button (未点击,点击,选中保持状态)效果实现
android selector 背景选择器的使用, button (未点击,点击,选中保持状态)效果实现 首先看到selector的属性: android:state_focus ...
- c# 判断网络是连接到互联网
方法1:InternetGetConnectedState [System.Runtime.InteropServices.DllImport("wininet") ...
- android95 缩放加载大图片
MainActivity: package com.itheima.loadimage; import android.os.Bundle; import android.app.Activity; ...
- 硬菜点播台 | MySQL阿里实践经典案例之参数调优最佳实践
http://mp.weixin.qq.com/s?__biz=MzA4NjI4MzM4MQ%3D%3D&mid=512708319&idx=1&sn=6af5f424d7cd ...
- C++ ORM ODB 入门介绍(一)
C++的语言特性决定了在C++中的ORM框架不可能像Java,C#那没有那么灵活. C++的ORM框架一般都是基于模板,编译时,因此其效率比起Java中的ORM框架更高. ODB是一个比较独立,成熟的 ...
- linux上gcc
查看gcc版本号 rpm -qa | grep gcc gnu的gcc是linux/unix下开发的,不能直接在window下运行.window下有gcc的移植版本.就是楼上说的MinGW和cygwi ...
- Redis操作Hash工具类封装,Redis工具类封装
Redis操作Hash工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>> ...
- sql 随机生成中文名字
,) )) -- 姓氏 ,) )) -- 名字 INSERT @fName VALUES ('赵'),('钱'),('孙'),('李'),('周'),('吴'),('郑'),('王'),('冯'),( ...
- Wireshark - 过滤规则
使用 Wireshark 的默认设置抓包时,会得到大量的冗余信息,以至于很难找到自己所需的封包.使用过滤器可以帮助我们在庞杂的结果中快速地找到我们所需的封包.过滤器分为两种:捕捉过滤器和显示过滤器. ...
- hazelcast的坑爹事
转载自 http://blog.csdn.net/hengyunabc/article/details/18514563 简介 开源中国的简介: Hazelcast是一个高度可扩展的数据分发和集群平台 ...