GCD介绍

一、GCD简单介绍
  • 什么是GCD
1. 全称是Grand Central Dispatch,可译为“牛逼的中枢调度器”
2. 纯c语言,提供了非常多强大的函数
  • GCD优势
GCD是苹果公司为多核的并行运算提出的解决方案
GCD会自动利用更多的CPU内核(比如双核、四核)
GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程)
程序员只需要告诉GCD想要执行什么任务,不需要编写任何管理线程代码

  • 任务和队列

GCD有2个核心概念

(1)任务:执行什么操作
(2)队列:用力爱存放任务

GCD的使用就2个步骤

(1)定制任务
(2)确定想要做的事情

将任务添加到队列中,GCD会自动将队列中的任务取出,放到对应的线程中执行
提示:任务的取出遵循队列的FIFO原则:先进先出,后进后出

  • 执行任务
1.GCD中有2个用来执行任务的函数
说明:把右边的参数(任务)提交给左边的参数(队列)进行执行

(1)用同步的方式执行任务 dispatch_sync(dispatch_queue_t queue, dispatch_block_t block);
参数说明:
queue:队列
block:任务

(2)用异步的方式执行任务 dispatch_async(dispatch_queue_t queue, dispatch_block_t block);

2.同步和异步的区别
   
同步:在当前线程中执行
异步:在另一条线程中执行

  • 队列

队列类型

GCD的队列分为2大类型

(1)并发队列(Concurrent Dispatch Queue)

  可以让多个任务并发(同时)执行(自动开启多个线程同时执行任务),并发功能只有在异步(dispatch_async)函数才有效

(2)串行队列 (Serial Dispatch Queue)

  让任务一个接一个的执行(1个任务执行完毕,再执行下一个任务)

补充说明

有4个术语比较容易混淆:同步、异步、并发、串行

同步和异步决定了要不要开启新的线程

同步:在当前的线程中执行任务,不具备开启新线程的能力
异步:在新的线程中执行任务,具备开启新线程的能力

并发和串行决定了任务的执行方式

并发:多个任务并发(同时)执行
串行:一个任务执行完毕之后在执行下一个任务

你可能感兴趣的:(GCD介绍)