2.1_5 线程的概念
引入进程之前,系统中各个程序只能串行执行。eg:音乐和QQ无法同时运行
引入进程之后:音乐和QQ可以同时运行
如何理解进程和线程,ChatGPT给出的结果是这样的:
进程(Process)和线程(Thread)是计算机科学中两个重要的概念,它们都涉及到程序的执行和并发性。
-
进程(Process):
- 一个进程是一个独立的执行单元,它包括了程序代码、数据和系统资源的副本。
- 每个进程都有自己独立的内存空间,相互之间不共享数据。
- 进程之间通常通过进程间通信(IPC,Inter-Process Communication)来进行数据交换。
- 进程是操作系统进行资源分配和调度的基本单位。
-
线程(Thread):
- 一个线程是一个进程中的执行单元,是进程的子集。多个线程共享同一个进程的资源,包括代码、数据和打开的文件等。
- 线程之间共享相同的地址空间,因此它们可以直接访问相同的数据。
- 由于线程共享进程的资源,线程间的通信相对于进程来说更为方便,但也需要注意线程同步的问题。
- 线程是操作系统进行调度的基本单位。
关于它们的理解,可以通过以下几个方面:
-
并发性: 进程是独立执行的,一个进程的执行不受其他进程的影响。而线程是进程的一部分,多个线程在同一个进程中并发执行,它们共享进程的资源。
-
通信: 进程间通信较为复杂,需要使用IPC机制,如消息队列、信号量、管道等。线程之间通信相对简单,因为它们共享相同的地址空间,可以直接访问共享数据。
-
资源开销: 创建和撤销进程比较耗费资源,因为每个进程都有独立的内存空间。相比之下,线程的创建和销毁开销较小,因为它们共享进程的资源。
-
并行性: 进程可以在多核系统中并行执行,因为它们有独立的内存空间。线程也可以在多核系统中并行执行,但需要注意线程间的同步问题。
总体来说,进程和线程是为了实现程序的并发执行而提出的概念,它们各有优势和劣势,应根据具体的应用场景选择合适的方式。
为什么引入线程
可以这样理解:一个进程就是一个APP的运行,一个进程里的多个线程就是需要同时运行的功能。
eg : QQ发消息和传输文件。
可以把线程理解为轻量级进程
线程是一个基本的CPU执行单元,也是程序执行流的最小单位。
引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如QQ视频、文字聊天、传文件)
引入线程后,进程只作为除CPU之外的系统资源的分配单元 (如打印机、内存地址空间等都是分配给进程的)