iOS 多线程基础(1)

iOS 多线程基础(1)_第1张图片

前言

本文针对非IT出身(或本科计算机逃课最多的童鞋)但想混迹互联网行业并成为一枚程序猿的汉子和妹子们参考学习,全是干货。。。下图是以思维导图的方式解释学习iOS多线程之前先知道多线程真正的本质。


iOS 多线程基础(1)_第2张图片

对于大部分已经进化到初级阶段的程序猿来讲这节课内容可能是多余,但我还是从计算机演变的历史,CPU的发展过程中理解多线程的本质,这样让零基础童鞋看着更舒服些。

在我们了解多线程之前去熟悉中央处理器 CPU,是目前 PC 以及所有移动设备的核心,它就像人的大脑来控制心脏跳动、控制血液循环、给四肢发布指令。


电路板上的 CPU 芯片


CPU 内部结


iOS 多线程基础(1)_第3张图片

CPU 的核心是中央控制单元、逻辑运算器、寄存器。指令和数据会从输入口进来,经过上述三个单元的结合运算之后把最终数据输出并存储到内存里面,再去执行下一条指令循环上述流程。CPU 的运算流程是,读取指令,解码指令,执行指令,放回数据。

读取指令:从程序内存中读取指令,由程序计数器决定指令在内存中的具体位置。计数器的主要工作就是告诉CPU从那里读取指令,然后再把计算结果放回哪里,就是负责在内存中寻址。

解码指令:CPU 根据从内存中提取到的指令决定其执行行为。在解码阶段,指令被拆解为有意义的片断,比如指令是两个数相加。

执行指令:在提取和解码阶段之后,接着进入执行阶段。该阶段中,连接到各种能够进行所需运算的CPU部件,比如经过解码之后是两个数相加,那么就执行相加操作。

返回执行结果和数据:最终阶段,写回,以一定格式将执行阶段的结果简单的写回内存,为下一步计算做准备。


                                    

二进制&高低电平


iOS 多线程基础(1)_第4张图片


iOS 多线程基础(1)_第5张图片
CPU 其实只认得0和1两个 二进制数字,更准确的来讲只认识 高低电平(计算机通过电源提供5V左右的电压,5V是高电平1,0V是低电平0),那我们常说的二进制数据是对高低电平的一种抽象。近一步我们 CPU 的内部结构其实都是 逻辑电路,逻辑电路刚好对应刚才讲的高低电压。关于CPU的内部实现就简单了解到这里。


单核处理器

iOS 多线程基础(1)_第6张图片

OK,对 CPU 内部结构有了这种本质了解之后我们近一步去理解 CPU 是如何执行指令的,CPU的英文单词是 Central(中央) processing(处理) unit(单元),从单元这个层面上来讲 CPU 在某一个时间段内只能执行一条命令,或叫同一个时间段内只能执行一个任务。如果是一个单行道,而且属于堵车时段,单一车辆通行的话,你只能等到前面车辆前进,你前面的车辆再等他前面的车辆,这就是单一任务的顺序执行思路。所以对于最早的计算机处理器来说在一个时间段内只能执行单一任务,这就是单核处理器。对于简单任务来讲这种串行的处理方式是可以接受的,但随着让计算机处理的任务越来越繁重,单一任务处理方式已不能胜任,那从人类的角度来讲任何东西都是可以继续研发改进的,尤其对于那些科技大公司来讲看到了巨大的市场。



虚拟多核(逻辑多核) Hyper Threading Technology


iOS 多线程基础(1)_第7张图片

基于此首先IT界的老大 Intel 公司开了一种技术叫做 Intel® Hyper-Threading Technology,用途在于结合这个技术可以把单个物理核CPU模拟成两个逻辑核,程序在操作系统调度下可以同时执行两条任务,系统会结合虚拟双核技术高效利用单核处理器以提高程序执行效率。



物理多核技术

iOS 多线程基础(1)_第8张图片

随着逻辑电路技术加工工艺的发展在单个处理器芯片内嵌入的中央处理单元(CPU)的数量越来越多,这样就不仅在逻辑上能实现多核,也能在物理层面实现多核技术,所以今天我们在电脑城买电脑的时候偶尔会看到物理四核,逻辑八核等参数说明,这种技术就是结合物理核虚拟多核两种技术结合的结果。


进程的概念

iOS 多线程基础(1)_第9张图片

进程是计算机中已经运行程序的实体,供操作系统调度管理程序,一个程序对应一个或若干个进程。在现在主流操作系统(都是面向线程开发的)中进程是线程的容器,程序启动之后根据运行需求生成多个线程来同步执行任务,比如一个iOS app除了在主线程更新UI以外还有其他子线程来处理网络请求、数据库读取等等。


线程的概念

iOS 多线程基础(1)_第10张图片

iOS 程序启动之后进入主线程,主线程力负责显示界面,初始化一些属性。程序的运行过程是被分成多个线程,对于操作系统以及处理器来讲每个程序是一个进程,结合多核CPU和Hyper ThreadingTechnology 技术每个进程又分成多个线程,线程是操作系统能够进行运算调度(管理)的最小单位。


一起学习交流,一起装逼

                                                                加群 461068734

iOS 多线程基础(1)_第11张图片

你可能感兴趣的:(iOS 多线程基础(1))