`
lizaochengwen
  • 浏览: 667359 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Grand Central Dispatch (GCD) 基础知识

 
阅读更多
Grand Central Dispatch (GCD)是Apple开发的一个多核编程的较新的解决方法。在Mac OS X 10.6雪豹中首次推出,并在最近引入到了iOS4.0。
GCD是一个替代诸如NSThread等技术的很高效和强大的技术。GCD完全可以处理诸如数据锁定和资源泄漏等负责的异步编程问题。
GCD可以完成很多事情,但是该文仅关注在iOS应用中实现多线程所需的一些基础知识。
在开始之前,需要理解是要提供给GCD队列的是代码块,用于在系统或者用户创建的的队列上调度运行。

声明一个队列
如下会返回一个用户创建的队列:
dispatch_queue_t myQueue = dispatch_queue_create("com.iphonedevblog.post", NULL);
其中,第一个参数是标识队列的,第二个参数是用来定义队列的参数(目前不支持,因此传入NULL)。
执行一个队列
如下会异步执行传入的代码:
dispatch_async(myQueue, ^{ [self doSomething]; });
其中,首先传入之前创建的队列,然后提供由队列运行的代码块。
声明并执行一个队列
如果不需要保留要运行的队列的引用,可以通过如下代码实现之前的功能:
dispatch_async(dispatch_queue_create ("com.iphonedevblog.post", NULL), ^{ [self doSomething]; });
暂停一个队列
如果需要暂停一个队列,可以调用如下代码。暂停一个队列会阻止和该队列相关的所有代码运行。
dispatch_suspend(myQueue);
恢复一个队列
如果暂停一个队列不要忘记恢复。暂停和恢复的操作和内存管理中的retain和release类似。调用dispatch_suspend会增加暂停计数,而dispatch_resume则会减少。队列只有在暂停计数变成零的情况下才开始运行。dispatch_resume(myQueue);
从队列中在主线程运行代码
有些操作无法在异步队列运行,因此必须在主线程(每个应用都有一个)上运行。UI绘图以及任何对NSNotificationCenter的调用必须在主线程长进行。在另一个队列中访问主线程并运行代码的示例如下:
dispatch_sync(dispatch_get_main_queue(), ^{ [self dismissLoginWindow]; });
注意,dispatch_suspend (以及dispatch_resume)在主线程上不起作用。

原文:http://blog.csdn.net/joywxz/article/details/6855823
分享到:
评论

相关推荐

    Grand Central Dispatch(gcd) 与 OpenCL的结合使用.pdf

    gcd——Grand Central Dispatch(gcd) 与 OpenCL的结合使用

    Grand Central Dispatch(GCD)介绍要点难点案例分享代码解析

    全称:Grand Central Dispatch(GCD) 定义:GCD是苹果公司开发的一套多线程编程的API,用于简化多线程编程的复杂性。 功能:GCD提供了一个易于使用的、基于任务的并发模型,可以将任务提交给系统,系统会自动管理...

    深入解析Grand Central Dispatch (GCD):iOS/OSX多线程编程框架及优化技巧

    内容概要:本文详细介绍了苹果提供的 Grand Central Dispatch(简称 GCD)这一多线程编程框架的基本概念、核心技术与应用场景。文中具体探讨了其核心组件:任务、队列以及这两种元素相互协作的工作原理,即任务的...

    派遣-Apple的Grand Central Dispatch的Rust包装器-Rust开发

    Apple的Grand Central Dispatch(GCD)的防锈包装。 GCD是任务并行性的一种实现,它允许将任务提交到用于Apple的Grand Central Dispatch(GCD)的Rust包装器的队列。 GCD是任务并行性的一种实现,它允许将任务提交到...

    Objective-C中的并发协奏曲:GCD(Grand Central Dispatch)精粹

    Object-C(Objective-C)是一种面向对象的编程语言,它建立在C语言的基础上,增加了面向对象的特性。Objective-C 最初由 Brad Cox 和 Tom Love 在1980年代早期设计,后来由苹果公司采用并推广,成为 macOS 和 iOS ...

    GCD:用 Swift 编写的 Grand Central Dispatch 的包装器

    大中华区用 Swift 编写的 Grand Central Dispatch 的包装器。例子GCD // submit your code for asynchronous execution on a global queue with high prioritygcd. async (. High ) { // your code}// or with main ...

    Async:Objective-C中的语法糖,用于Grand Central Dispatch中的异步调度

    异步的Objective-C中的语法糖,用于Grand Central Dispatch( )中的异步调度注意:这是Swift中的 。 异步糖看起来像这样: [[Async main: ^{ NSLog ( @" ===>>> This is run on the main queue " );}] background: ...

    gcdTest下载图片 dispatch_async

    标题中的“gcdTest下载图片 dispatch_async”涉及到两个主要的iOS编程概念:GCD(Grand Central Dispatch)和异步图像下载。GCD是苹果为多核处理器优化并发编程提供的一种技术,而dispatch_async函数是GCD中用于在...

    swift-corelibs-libdispatch:libdispatch项目(又名Grand Central Dispatch),用于多核硬件上的并发

    大中央派遣Grand Central Dispatch(GCD或libdispatch)为多核硬件上的并发代码执行提供全面的支持。 libdispatch当前可在所有Darwin平台上使用。 该项目旨在使libdispatch的现代版本可在所有其他Swift平台上使用。 ...

    GCD IOS example

    Grand Central Dispatch (GCD)是异步执行任务的技术之一。一般将应用程序中记述的线程管理用的代码在系统级中实现。由于线程管理是作为系统的一部分来实现的,因此可统一管理,也可执行任务,这样就比以前的线程更...

    iOS开发:深入理解GCD 第二篇(dispatch_group、dispatch_barrier、基于线程安全的多读单写)1

    在iOS开发中,Grand Central Dispatch (GCD) 是一种强大的多线程管理工具,它能够帮助开发者高效地处理并发任务。本篇文章主要讨论了如何深入理解GCD中的dispatch_group、dispatch_barrier以及基于线程安全的多读单...

    GCD是Apple提供的一套用于实现多线程编程的底层API.docx

    GCD(Grand Central Dispatch)是Apple提供的一套用于实现多线程编程的底层API,它属于libdispatch库的一部分。GCD为开发者提供了一个高效、易用、灵活的并发编程模型,特别适用于iOS和macOS等Apple平台上的多线程...

    Async.OC:Objective-C中的语法糖,用于Grand Central Dispatch中的异步调度

    异步OC 用Objective-C重写... 代替熟悉的GCD语法: dispatch_async (dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0 ), ^{ NSLog ( @" A: This is run on the background " ); dispatch_async ( dis

    多线程GCD的使用

    iOS多线程编程之Grand Central Dispatch(GCD)使用,具有1、常用的方法dispatch_async 2、dispatch_group_async 3、dispatch_barrier_async 4、dispatch_apply的用法

    GCD.rar_kjnkjnkj

    很抱歉,根据您提供的信息,"GCD.rar_kjnkjnkj"的描述部分"lbj hvjkg vhgv hg kbgvkhgvhbnjkjh"和标签"kjnkjnkj"似乎并不包含任何有意义的IT知识点或者与GCD(Grand Central Dispatch)直接相关的具体内容。...

    基于Swift实现的项目集合

    Grand Central Dispatch (GCD)多线程。 # UI UIKit Framework Reference # Photo Photos Framework And PhotosUI Framework。 # Utils 常用工具 # ViewRotation 横竖屏设置、横竖屏监听 # Runtime 运行时 ...

    GCD线程基础学习资源

    在iOS和macOS开发中,Grand Central Dispatch(GCD)是一种强大的多线程技术,用于管理应用程序的并发性。GCD是苹果操作系统内核的一部分,它抽象了线程管理和调度,使得开发者可以更加专注于任务本身,而不是底层的...

    GCD使用的相关方法

    GCD(Grand Central Dispatch)是Apple在其操作系统macOS和iOS中引入的一种并行编程技术,它简化了多核处理器和多线程编程。GCD基于队列和任务的概念,允许开发者高效地管理并发任务,提高应用程序的性能。下面将...

    iOS多线程GCD和线程锁的使用

    iOS多线程编程之Grand Central Dispatch(GCD)使用,卖票的例子来讲NSThread的线程同步,使用了两种锁,一种NSCondition ,一种是:NSLock,还有加了一个 线程3 去唤醒其他两个线程锁中的wait,里面的注释很已经写的...

Global site tag (gtag.js) - Google Analytics