ios并发会造成什么问题_iOS多线程 串行队列、并发队列以及同步执行、异步执行...

关键词的理解

1. 进程

正在运行的程序被称为进程,负责程序运行的内存分配,每一个进程都有独立的虚拟内存空间

2. 线程

线程是进程中最小的执行单元,一个进程可以有多条线程,但是至少包含一条线程,被称为主线程。线程里有非常多的任务。

同一时间单核CPU只能执行一个线程,多线程是CPU快速在多个线程之间切换,造成多个线程同时执行的假象

多核CPU是真的同时处理多个线程

3. 并行

充分利用计算机的多核,在多个线程上同步进行

4. 并发

在一条线程上通过快速切换,让人感觉在同步进行

5. 任务

任务分为同步任务和异步任务,任务是在线程中执行的

同步任务:同步任务不会开启新的线程,按顺序执行,执行完一个再执行下一个,需要等待。

开启同步任务使用GCD中的sync。

异步任务:异步任务是彼此独立的,不需要等待某一件事完成后再工作,无法确定任务的执行顺序。执行异步任务会创建新的线程。异步是最终目的,多线程只是我们实现异步的一种手段。

开启异步任务使用GCD中的async。

6. 队列

是先进先出的线性表。

串行队列:队列中的任务一个一个的执行,前一个任务不执行完毕,队列不会调度。

并行队列:只要有空闲的线程,队列就会调度当前任务,交给线程去执行,不用等待上一个任务执行完毕。

全局队列:系统开发的,是并行队列,但调用时没法确认操作所在队列

主队列:每一个应用程序对应唯一一个主队列,UI操作必须在主线程内,否则可能出现崩溃

队列与任务的组合

1. 串行队列同步执行

不会创建新线程,任务一个一个按顺序执行。

2. 并行队列同步执行

不用等待一个任务执行完毕才开始调度下一个任务,但是同步任务不会开启新的线程,所以也是一个一个的执行。

3. 串行队列异步执行

按顺序来调度任务,任务会创建一个新的线程(线程5)来执行

4. 并行队列异步执行

会创建多个线程,操作并发无序执行。

5. 全局队列同步执行

操作不会新建线程,操作顺序执行

6. 全局队列异步执行

会创建多个线程,操作无序执行

7. 主线程同步执行

主线程不会结束,主队列中的同步操作永远不会被执行,会死锁。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值