Qt-QThread与QProcess 线程与进程介绍、对比与使用

1 线程与进程的区别与联系

线程和进程是操作系统中两个重要的概念,它们在计算机系统中扮演着不同的角色。

1.1 进程定义

进程:进程是一个具有独立功能的程序关于某个数据集合运行活动,是操作系统中资源分配和调度的独立单位,也是基本的执行单元。它是一个动态的实体,具有独立性、并发性、异步性和动态性的特点。它有自己的生命周期,包括创建、运行和销毁等阶段。

进程结构特征:由程序、数据和进程控制块三部分组成。在单核CPU系统中,一个进程的所有线程共享该进程的CPU时间片,轮流执行。

进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)–存储处理器执行的代码,数据区域(data region)–存储程序执行期间的一些数据变量,堆栈(stack region)–存储动态分配的内存和本地变量及指令。

进程是一个“执行中的程序”。程序是一个没有生命的实体,只有在运行时处理器才会赋予它生命,才能成为一个活动的实体,我们称其为“进程”。

每一个进程都会有一个独一无二的编号,被称为进程标识码,简称PID(Process,identifier),它是一个取值为1-32768

进程的三种状态:

  1. 就绪(Ready)状态:当进程分配到除CPU以外的必要资源后,只要再获得CPU,便可以立即执行,进程这时的状态为就绪状态。在一个系统中处于就绪状态的进程可能有多个,通常将它们排成一个队列,称为就绪队列。
  2. 阻塞(Blocked)状态:正在执行的进程由于发生某事件或接受某消息无法继续执行时,便放弃处理机而处于暂停状态,也即进程的执行收到阻塞,把这种暂停状态称为阻塞状态,有时也称为等待状态和封锁状态。通常使进程处于阻塞的原因有:请求I/O,申请缓冲空间。也会产生一个相应的阻塞队列。
  3. 运行(Running)状态:进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态,在多处理机系统中,则有多个进程处于执行状态;

1.2 线程定义

线程:线程是进程的基本执行单元,是进程中的一个实体,是被系统独立调度和分派的基本单位。线程比进程更小,基本上不拥有系统资源,只拥有运行时必不可少的资源(如程序计数器、一组寄存器和栈)。线程可以共享同一进程的资源,如全局变量,这使得多线程程序具有更高的并发性。线程之间通过消息通信等方式实现同步。

线程优点:
(1)易于调度。
(2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一个程序的不同部分。
(3)开销少。创建线程比创建进程要快,所需开销少,占用的资源也少;
(4)充分发挥多处理器的功能。通过创建多线程进程,每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分的运行。

1.3 线程与进程的区别

(1)调度:线程作为处理器调度和分配的基本单位,而进程是作为拥有资源的基本单位
(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可以并发执行
(3)拥有资源:进程是拥有资源的一个独立单位,有自己独立的地址空间;线程不拥有系统资源,但可以访问隶属于进程的资源,共享进程的地址空间.
(4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。

1.4 线程与进程的联系

(1)二者均可并发执行;
(2)线程是指进程内的一个执行单元,也是进程内的可调度实体。一个程序至少有一个进程,一个进程至少有一个线程,一个线程只属于一个进程;
(3)资源分配给进程,同一进程的所有线程共享该

  • 26
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用QtQProcess类杀掉一个QThread进程,你可以使用QProcess的start方法来启动一个进程,然后使用taskkill命令来杀掉指定的进程。在引用中的代码示例中,killExe函数展示了如何使用QProcess来杀掉一个指定的进程。在该函数中,通过执行命令"taskkill -im exeName -f"来杀掉进程。其中,exeName是要被杀掉的进程名。注意,这段代码是适用于Windows操作系统的。如果你使用的是Linux系统,你可以参考引用中的start函数的代码,然后自行编写适用于Linux系统的进程杀死代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【Qt专栏】Qt嵌入进程和杀死进程](https://blog.csdn.net/weixin_43729127/article/details/126908645)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Qt进程线程QProcessQThread](https://blog.csdn.net/qq_45698138/article/details/126273572)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余加木

想喝蜜雪冰城柠檬水(≧≦)/

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值