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 * ...
随机推荐
- [React] React Fundamentals: transferPropsTo
the transferPropsTo method lets you easily push properties into your components to easily customize ...
- [React] React Fundamentals: Add-on ClassSet() for ClassName
To get the add-ons, use react-with-addons.js (and its minified counterpart) rather than the common r ...
- iOS开发多线程篇---atomic nonatomic区别
摘要 atomic和nonatomic区别用来决定编译器生成的getter和setter是否为原子操 作.atomic提供多线程安全,是描述该变量是否支持多线程的同步访问,如果选择了atomic 那么 ...
- 新型信用卡MasterPass
Xsolla与masterpass合作.提供新型支付方式 "电子支付的未来在这里. "在万事达卡宣布发行一种全新的被称为MasterPass的支付解决方式的两年后.从2014年底開 ...
- 推荐一本好的c#高级程序设计教程
哪位大神推荐一本好的c#高级程序设计教程 小弟在此感激不尽,谢谢
- Default route and zero route
A default route of a computer that is participating in computer networking is the packet forwarding ...
- Poco库网络模块例子解析1-------字典查询
Poco的网络模块在Poco::Net名字空间下定义 下面是字典例子解析 #include "Poco/Net/StreamSocket.h" //流式套接字 #include ...
- arcmap10如果判断一个面是否含洞
使用字段计算器,使用python !Shape.isMultipart!结果为true就是,false不是
- 关于U3D画面出现卡顿的问题
在U3D中,曾近遇到过卡顿的问题,下面说明解决方法 一:在关于相机移动的函数中,移动的函数不应该放在Update里面应该放到LateUpdate 二:如果最开始建立项目的时候选择的时候是3D游戏,如果 ...
- ASP.NET Identity 用户注册相关设定
此部分可以在 Web项目中的App_Start目录下的 IdentityConfig.cs 文件进行设置. 1.配置密码的验证逻辑 manager.PasswordValidator = new Pa ...