美文网首页
GCD 梳理

GCD 梳理

作者: 哎哟丶我去 | 来源:发表于2018-07-12 18:11 被阅读0次

1.线程和进程的区别
进程是应用程序,是操作系统的基本结构,用来管理资源。
线程是程序用来处理任务的,一个进程可以有一个或多个线程。
2.多线程
一个CPU只能同时处理一个线程,但是可以快速切换线程,造成同时处理多个线程的假象。
3.串行队列与并发队列
串行是指多个线程按顺序执行
并发是指多个线程同时执行,其实就是CPU在多个线程中快速切换
4.同步与异步
同步是指任务一项接着一项完成,前面一个任务处理完以后才会处理下一个任务,不开启新线程。
异步是指同时处理多个任务,互不干扰,开启新线程。
5.实现多线程的四种方法
(1)pthread
(2)NSThread
(3)GCD
(4)NSOperation
6.GCD
GCD 是基于NSThread进行封装
GCD 有3中队列,全局并发队列 dispatch_get_global_queue(0,0) 主队列dispatch_get_main_queue() , 其他队列 dispatch_queue_create(0,0)
其中dispatch_get_global_queue(0,0)是全局并发队列,方便使用。并发队列可以同时多个线程一起执行、
dispatch_get_main_queue() 是给串行队列,用来给主线程用的
dispatch_queue_create(0,0) 可以根据传的参数来确定队列是串行队列DISPATCH_QUEUE_SERIAL或者并行队列DISPATCH_QUEUE_CONCURRENT
所以有3种队列,2中线程执行方式,就有了6中组合
1.串行同步 —— 任务一件一件按顺序处理,不开启新的线程
2.串行异步 —— 任务一件一件按顺序处理,开启新线程
3.并行同步 —— 虽然是并行,但是因为是同步的,任务仍然按顺序进行,开启新的线程
4.并行异步 —— 任务交叉进行,互不干扰,开启新的线程
5.主队列同步 —— 主队列比较特殊,由于主队列存在一个syncMain的线程,当其他线程加进队列来以后,线程需要等syncMain执行完毕才会执行新加入的线程,而新线程会等待syncMain处理完毕才会执行下一个线程,由此造成线程死锁进而程序崩溃
6.主队列异步 —— 任务交叉进行,互不干扰,开启新的线程

相关文章

  • GCD 梳理

    1.线程和进程的区别进程是应用程序,是操作系统的基本结构,用来管理资源。线程是程序用来处理任务的,一个进程可以有一...

  • iOS多线程梳理-NSOperation

    上一篇 iOS多线程梳理-GCD(3) NSOperation NSOperation 是苹果公司对 GCD 的封...

  • 之Objective-C高级编程(GCD)

    本文主要对GCD的概念、API以及实现进行梳理. 一.CCD的概念. 1.GCD,全称是Grand Central...

  • iOS多线程梳理-GCD(3)

    上一篇 iOS多线程梳理-GCD死锁 GCD栅栏函数 仅在自己创建的并发队列上有效,在全局(Global)并发队列...

  • iOS多线程梳理-GCD死锁

    上一篇 iOS多线程梳理-GCD GCD死锁探讨 先看一个简单程序: 可以看出,viewDidLoad执行了第一句...

  • iOS多线程梳理-GCD

    GCD简介 Grand Central Dispatch (GCD)是苹果为多核的并行运算提出的解决方案,所以会自...

  • GCD

    GCD的简单易用,很容易爱不释手。今天趁机梳理一下GCD相关知识。 线程、任务和队列 首先来认识一下队列和任务引自...

  • GCD定时器知识梳理

    1 创建一个定时器(dispatch_source_t本质还是个OC对象) /** 定时器(这里不用带*,因为di...

  • GCD梳理与总结(三)封装

    前面两节内容笔者主要对GCD的一些基本概念和常用API做了一个简单的梳理和归纳,对照笔者提供的Demo案例,相信读...

  • 多线程之GCD

    GCD介绍 1、GCD简介 2、GCD任务和队列 3、GCD 的基本使用 4、GCD 线程间的通信 5、GCD 的...

网友评论

      本文标题:GCD 梳理

      本文链接:https://www.haomeiwen.com/subject/uorrpftx.html