iOS开发多线程--CGD基本用法

一、简单介绍

1.什么是GCD?

全称是Grand Central Dispatch,可译为“牛逼的中枢调度器”

纯C语言,提供了非常多强大的函数

2.GCD的优势

GCD是苹果公司为多核的并行运算提出的解决方案

GCD会自动利用更多的CPU内核(比如双核、四核)

GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程)

程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理代码

二、任务和队列

GCD中有2个核心概念

(1)任务:执行什么操作

(2)队列:用来存放任务

GCD的使用就2个步骤

(1)定制任务

(2)确定想做的事情

将任务添加到队列中,GCD会自动将队列中的任务取出,放到对应的线程中执行

提示:任务的取出遵循队列的FIFO原则:先进先出,后进后出.

三、代码实现

(废话不对,代码是最合适理解的)

/**************** 串并行队列 ***********************/

// 队列

// 创建一个队列

// 参数1  队列标识    参数2  队列类型 (CONCURRENT并行, SERIAL串行)

dispatch_queue_t queue = dispatch_queue_create("myQueue", DISPATCH_QUEUE_CONCURRENT);

// 添加任务  异步

dispatch_async(queue, ^{

for (int i = 0; i < 5; i++) {

NSLog(@"任务1 ---> %d", i);

}

});

dispatch_async(queue, ^{

for (int i = 0; i < 5; i++) {

NSLog(@"任务2 ---> %d", i);

}

});

*/

/*

// 添加任务, 同步 (阻塞主线程)

dispatch_sync(queue, ^{

for (int i = 0; i < 5; i++) {

NSLog(@"同步任务1 ---> %d", i);

sleep(1);

}

});

*/

/************* 全局队列 *****************/

dispatch_queue_t queue_globel = dispatch_get_global_queue(0, 0);

dispatch_async(queue_globel, ^{

for (int i = 0; i < 5; i++) {

NSLog(@"全局队列 ---> %d", i);

}

// 下载网络任务

// 属性 UI

dispatch_async(dispatch_get_main_queue(), ^{

NSLog(@"开始刷新把");

// 一般刷新 UI 使用此队列�

});

});

for (int i = 0; i < 5; i++) {

NSLog(@"主线程---> %d", i);

}

你可能感兴趣的:(iOS开发多线程--CGD基本用法)