GCD-系统提供的dispatch方法

系统提供的dispatch方法如下:

  //系统提供的dispatch方法

    //后台执行:
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
        // something
    });

    //主线程执行:
    dispatch_async(dispatch_get_main_queue(), ^{
        // something
    });

    //一次性执行:
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        //something
    });

    // 延迟2秒执行:
    double delayInSeconds = 2.0;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
        // 延迟2s在主线程中执行
    });

    //自定义queue
    dispatch_queue_t urls_queue = dispatch_queue_create("blog.devtang.com", NULL);
    dispatch_async(urls_queue, ^{
        //something
    });

    //让后台2个线程并行执行,然后等2个线程都结束后,再汇总执行结果
    dispatch_group_t group = dispatch_group_create();
    dispatch_group_async(group, dispatch_get_global_queue(0,0), ^{
        // 并行执行的线程一
    });
    dispatch_group_async(group, dispatch_get_global_queue(0,0), ^{
        // 并行执行的线程二
    });
    dispatch_group_notify(group, dispatch_get_global_queue(0,0), ^{
        // 汇总结果
    });

参考资料:

http://www.devtang.com/blog/2012/02/22/use-gcd/

http://www.cnblogs.com/pure/archive/2013/03/31/2977420.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 07-20

GCD-系统提供的dispatch方法的相关文章

系统提供的dispatch方法

系统提供的dispatch方法 为了方便地使用GCD,苹果提供了一些方法方便我们将block放在主线程或后台线程执行,或者延后执行.使用的例子如下所示: // 后台执行: dispatch_async(dispatch_get_global_queue(0, 0), ^{ // something }); // 主线程执行: dispatch_async(dispatch_get_main_queue(), ^{ // something }); // 一次性执行: static dispatc

系统提供的dispatch方法介绍

为了方便地使用GCD,苹果提供了一些方法方便我们将block放在主线程或后台线程执行,或者延后执行.使用的例子如下所示: // 后台执行: dispatch_async(dispatch_get_global_queue(0, 0), ^{ // something }); // 主线程执行: dispatch_async(dispatch_get_main_queue(), ^{ // something }); // 一次性执行: static dispatch_once_t onceTok

iOS——系统提供的dispatch方法

// 后台执行: dispatch_async(dispatch_get_global_queue(0,0), ^{ // something }); // 主线程执行: dispatch_async(dispatch_get_main_queue(),^{ // something }); // 一次性执行: static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ // code to be excuted once });

Swift中的GCD——常见的dispatch方法

  我们一般使用如下的dispatch方法: 解释: 第一句是异步执行,第二句是延迟异步执行,第三句是先后台运行,再更新UI dispatch_get_main_queue 代表应用主线程执行,可以在内部更新UI(并不会阻塞主线程) dispatch_get_global_queue 代表在系统后台运行,不一定和UI在同一线程,不能更新UI,适用于网络处理与Core Data等的处理.   修改block之外的变量 访问变量 默认情况下,在程序块中访问的外部变量是赋值(assign)过去的,即写

GCD基本概念和Dispatch Queue

什么是GCD? Grand Central Dispatch或者GCD,是?一套低层API,提供了?一种新的?方法来进?行并发程序编写.从基本功能上讲,GCD有点像NSOperationQueue,他们都允许程序将 任务切分为多个单?一任务然后提交?至?工作队列来并发地或者串?行地执?行.GCD?比之NSOpertionQueue更底层更?高效,并且它不是Cocoa框架的?一部分. 除了代码的平?行执?行能?力,GCD还提供?高度集成的事件控制系统.可以设置句柄来响应?文件描述符.mach po

GCD(Grand Central Dispatch)的详解

GCD(Grand Central Dispatch) FIFO(先入先出) Dispatch(派遣,急件,分派) Serial (连续的,连载的,分期偿还的) Dispatch Queue(调度队列) Serial Dispatch Queue(串行调度队列) Concurrent Dispatch Queue(并发调度队列) Main Dispatch Queue(主要调度队列) Global Dispatch Queue(全局调度队列) dispatch_apply是(同步函数) GCD是

Dispatch 方法详解

Dispatch_queue dispatch_queue是一种执行处理的等待对列.按照追加顺序(FIFO)执行处理. dispatch_queue分为两种,一种是等待当前正在处理的任务完成后再执行下一个任务,每次只执行一个任务,按 照顺序执行,称为Serial Dispatch Queue,另一种就是不等待,意思就是不管当前的任务是否执行完毕都开始执 行下一个任务,任务并发执行,称为Concurrent Dispatch Queue. 当变量queue为Concurrent Dispatch

iOS多线程编程(四)------ GCD(Grand Central Dispatch)

一.简介 是基于C语言开发的一套多线程开发机制,也是目前苹果官方推荐的多线程开发方法,用起来也最简单,只是它基于C语言开发,并不像NSOperation是面向对象的开发,而是完全面向过程的.如果使用GCD,完全由系统管理线程,我们不需要编写线程代码.只需定义想要执行的任务,然后添加到适当的调度队列(dispatch_queue).GCD会负责创建线程和调度你的任务,系统会直接提供线程管理. 二.任务和队列 GCD中有两个核心概念 (1)任务:执行什么操作 (2)队列:用来存放任务 GCD的使用就

iOS系统网络抓包方法

在进行iOS开发过程中,经常会遇到各种各样的网络访问问题,以前苦于没有抓包工具,很多网络问题解决起来很痛苦.现在终于好了,本文提供两种方式进行网络抓包: 1. 网络共享 + 可视化抓包工具 基本原理 原理比较简单,ios设备通过代理方式共享连接mac电脑的无线网卡,使用抓包工具抓包,然后进行分析(我们推荐使用Wireshark,在MAC系统上也可以使用Paros工具). 现在以MAC系统下Paros工具为例,详细描述下抓包过程: 操作步骤 1)  首先将MAC电脑的以太网共享给airport,使