GCD的基本使用

GCD

多核编程、自动管理线程的生命周期(创建线程,调度任务,销毁线程)

一、GCD 的【任务】与【队列】

1.任务:在线程中执行的代码(block块),有2种任务类型。

【同步执行/sync】:

同步将任务添加到指定队列中,不能开启新线程,任务执行结束前一直等待。

【异步执行/async】:

异步将任务添加到指定队列中,能开启新线程,任务执行不等待。


2.队列:存放任务的队列,FIFO(先进先出)原则,GCD只有2种队列。

【串行队列/Serial Dispatch Queue】:

只开启一个线程,一个任务执行完再执行下一个。(新增子线程数 1)

【并发队列/Concurrent Dispatch Queue】:

开启多个线程,且同时执行任务,只在异步dispatch_async有效。(新增子线程数N)


二、GCD的使用

1.GCD使用步骤:

    1.1 创建队列。

    1.2将任务追加到任务的等待队列中,系统根据任务类型执行任务。

2.队列的创建和获取方式

    2.1队列创建:dispatch_queue_create(参数1,参数2);

        参数1:队列唯一标识符,可为空。(推荐使用应用程序ID逆序->com.beijing.testQueue)

        参数2:队列类型。(串行:DISPATCH_QUEUE_SERIAL 并发:DISPATCH_QUEUE_CONCURRENT)

例:

// 串行队列的创建方法:

dispatch_queue_t serialQueue =

dispatch_queue_create("com.beijing.testQueue", DISPATCH_QUEUE_SERIAL);

// 并发队列的创建方法:

dispatch_queue_t concurrentQueue = 

dispatch_queue_create("com.beijing.testQueue", DISPATCH_QUEUE_CONCURRENT);


    2.2 队列获取方法

        2.2.1【主队列/Main Dispatch Queue】

            dispatch_queue_t mainQueue = dispatch_get_main_queue();

        2.2.2【全局并发队列/Global Dispatch Queue】

            dispatch_queue_t globalQueue = dispatch_get_global_queue(参数1,参数2);

                参数1:队列优先级 (一般用DISPATCH_QUEUE_PRIORITY_DEFAULT)

                参数2:暂时没用,传0;

3.任务的创建方式

    3.1同步执行任务创建方法

dispatch_sync(queue, ^{

// 这里放同步执行任务代码

});

    3.2异步执行任务创建方法

dispatch_async(queue, ^{

// 这里放异步执行任务代码

});

你可能感兴趣的:(GCD的基本使用)