1、并发
1.1、并发和并行区别
并行,parallel
同时做某些事,可以互不干扰的同一个时刻做几件事
并发,concurrency
也是同时做某些事,但是强调,一个时段内有事情要处理。
举例
高速公路的车道,双向4车道,所有车辆(数据)可以互不干扰的在自己的车道上奔跑(传输)。
在同一个时刻,每条车道上可能同时有车辆在跑,是同时发生的概念,这是并行。
在一段时间内,有这么多车要通过,这是并发。
并行不过是使用水平扩展方式解决并发的一种手段而已。
 
2、进程和线程
2.1、简介
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
进程和程序的关系:程序是源代码编译后的文件,而这些文件存放在磁盘上。当程序被操作系统加载到
内存中,就是进程,进程中存放着指令和数据(资源)。一个程序的执行实例就是一个进程。它也是线程的容器。
Linux进程有父进程、子进程,Windows的进程是平等关系。
在实现了线程的操作系统中,线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。
线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。
一个标准的线程由线程ID,当前指令指针(PC)、寄存器集合和堆、栈组成。
在许多系统中,创建一个线程比创建一个进程快10-100倍。
 
2.2、进程、线程的理解
现代操作系统提出进程的概念,每一个进程都认为自己独占所有的计算机硬件资源。
进程就是独立的王国,进程间不可以随便的共享数据。
线程就是省份,同一个进程内的线程可以共享进程的资源,每一个线程拥有自己独立的堆栈
 
2.3、线程的状态
状态               含义
就绪(Ready)        # 线程能够运行,但在等待被调度。可能线程刚刚创建启动,或刚刚从阻塞中恢复,或者被其他线程抢占
运行(Running)      # 线程正在运行
阻塞(Blocked)      # 线程等待外部事件发生而无法运行,如I/O操作
终止(Terminated)   # 线程完成,或退出,或被取消
 

2.4、Python中的进程和线程
运行程序会启动一个解释器进程,线程共享一个解释器进程。