OC语法_多线程
1. 多线程实现原理;
2. 多线程实现的方案;
3. 线程同步技术;
1. 多线程实现原理;
- 进程:是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。
①. 狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。
②. 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
③. 进程的概念主要有两点:
第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。
第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。
- 线程:(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
①. 一个进程可以有很多线程,每条线程并行执行不同的任务;
②. 同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。
- 多线程:是指从软件或者硬件上实现多个线程并发执行的技术。
①. 实现原理:利用CPU在多个线程中快速调度;
②. 优缺点:
多线程优缺点- 并发和串行、同步和异步
① 并发和串行:主要区别在于任务执行的方式;
并发:多个任务并发(同时)执行;
串行:一个任务执行完成后,再执行下一个任务。
② 同步和异步:主要区别在于有无新线程开辟;
同步:在当前线程中执行任务.不具备开启新线程的能力;
异步:在新的线程中执行任务,具备开启新线程的能力;
同步函数(dispatch中的sync函数): 立马在当前线程执行任务,执行完毕后才能继续往下执行,即同步函数内的任务不执行完,该函数就会卡住,不会继续往下执行;
异步函数(dispatch中的async函数):不要求立马在当前线程执行任务,会等上一个任务执行完再执行。
多线程中的队列2. 多线程实现的方案;
IOS平台多线程实现方案3. 线程同步技术;
- 概述:即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作, 其他线程才能对该内存地址进行操作,而其他线程又处于等待状态,实现线程同步的方法有很多,临界区对象就是其中一种。
(PS : 其中有部分章节是从前人的文章中搬运过来整理而成,这些文章里已经对部分知识点解释的很清楚明了了,我也没有更好的表达方式,所以站在巨人的肩膀上,我只是一个整理者加了部分自己的理解。)