多线程基础知识总结与名词解释

主要记录的是进程与线程的区别,并发与并行的区别。

进程与线程区别:
进程:进程是程序的一次执行过程,是系统分配资源的基本单位(调度单位),一个软件就是一个进程。程序运行时系统就会创建一个进程,并为它分配内存,显卡,GPS,磁盘等等资源,统称为程序的执行环境,也就是程序上下文。然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。
注:由于CPU同时刻只能执行一个进程,如果不分配时间控制的话,一个进程可能使用CPU从头到运行结束,才有了操作系统调度器,但是调度器切换CPU给不同进程使用的速度非常快,我们这些使用者看来程序是在同时运行,这就是并发,但是CPU在同一时刻只在运行一个进程。

线程:线程与进程相似,但线程是一个比进程更小的执行单位,线程是CPU调度和分配的基本单位,一个进程可以生成很多线程,它们共享进程的所有资源。

区别:
进程是操作系统进行资源分配(包括cpu、内存、磁盘IO等)的最小单位
线程是CPU调度和分配的基本单位
进程与进程的资源都是不同的,很难沟通,但是同一进程下的线程共享全局变量、静态变量等数据,通信更方便,但是要处理同步与互斥的问题。

并发与并行区别:
并发:在一段时间内多个任务同时执行,或者说是在一段很短的时间内可以执行多条程序指令,微观上看起来好像是可以同时运行多个进程,单核处理器就可以做到。

并行:在同一时刻多个任务同时执行,或者说是在同一时刻可以执行多条程序指令,多核处理器才可以做到。

如果是单核CPU,那么在进程中的不同线程为了使用CPU核心,则会进行线程切换,但是由于共享了程序执行环境,这个线程切换比进程切换开销少了很多,在这里依然是并发,唯一核心同时刻只能执行一个线程。

如果CPU是多核,那么进程中的不同线程可以使用不同核心,则是并行。

在多核处理器上,并发和并行同时存在,处理器上的每个核同一时刻同时执行多个任务,每个核在很短的时间段内又同时执行多个任务,对多任务粗略划分是多个进程,对进程划分可能又是多个线程。同一时刻,处理器的每个核只能运行一个进程中的一个线程中的一条指令(Intel 的超线程技术,如双核四线程,四核八线程,处理器的线程(硬件上)和进程中的线程(软件上)不是一个概念,这个所谓的超线程技术也并不能达到真正的多核效果,只是提高了处理器的吞吐量核利用率)。

注:无论是并发还是并行,对于我们来说,看到的是多进程,多线程,下一篇分享多线程的开发。