目录
- 1 线程与进程的区别与联系
- 1.1 进程定义
- 1.2 线程定义
- 1.3 线程与进程的区别
- 1.4 线程与进程的联系
- 2 QThread
- 2.1 序言
- 2.2 成员函数
- 2.3 使用流程
- 2.4 注意事项
- 3 QProcess
- 参考链接
1 线程与进程的区别与联系
线程和进程是操作系统中两个重要的概念,它们在计算机系统中扮演着不同的角色。
1.1 进程定义
进程:进程是一个具有独立功能的程序关于某个数据集合运行活动,是操作系统中资源分配和调度的独立单位,也是基本的执行单元。它是一个动态的实体,具有独立性、并发性、异步性和动态性的特点。它有自己的生命周期,包括创建、运行和销毁等阶段。
进程结构特征:由程序、数据和进程控制块三部分组成。在单核CPU系统中,一个进程的所有线程共享该进程的CPU时间片,轮流执行。
进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)–存储处理器执行的代码,数据区域(data region)–存储程序执行期间的一些数据变量,堆栈(stack region)–存储动态分配的内存和本地变量及指令。
进程是一个“执行中的程序”。程序是一个没有生命的实体,只有在运行时处理器才会赋予它生命,才能成为一个活动的实体,我们称其为“进程”。
每一个进程都会有一个独一无二的编号,被称为进程标识码,简称PID(Process,identifier),它是一个取值为1-32768
进程的三种状态:
- 就绪(Ready)状态:当进程分配到除CPU以外的必要资源后,只要再获得CPU,便可以立即执行,进程这时的状态为就绪状态。在一个系统中处于就绪状态的进程可能有多个,通常将它们排成一个队列,称为就绪队列。
- 阻塞(Blocked)状态:正在执行的进程由于发生某事件或接受某消息无法继续执行时,便放弃处理机而处于暂停状态,也即进程的执行收到阻塞,把这种暂停状态称为阻塞状态,有时也称为等待状态和封锁状态。通常使进程处于阻塞的原因有:请求I/O,申请缓冲空间。也会产生一个相应的阻塞队列。
- 运行(Running)状态:进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态,在多处理机系统中,则有多个进程处于执行状态;
1.2 线程定义
线程:线程是进程的基本执行单元,是进程中的一个实体,是被系统独立调度和分派的基本单位。线程比进程更小,基本上不拥有系统资源,只拥有运行时必不可少的资源(如程序计数器、一组寄存器和栈)。线程可以共享同一进程的资源,如全局变量,这使得多线程程序具有更高的并发性。线程之间通过消息通信等方式实现同步。
线程优点:
(1)易于调度。
(2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一个程序的不同部分。
(3)开销少。创建线程比创建进程要快,所需开销少,占用的资源也少