广告区域

广告区域

传奇知识网 - 一个你身边的百科全书

进程和线程的区别(进程和线程的概念)

2023-06-06 14:01:17投稿人 : yq4qlskj围观 : 57 次0 评论

线程和进程的区别是什么?可以说是程序员必须准备的高频面试题。

相信很多程序员在面试算法或者开发工作的时候都遇到过这个问题。虽然这个问题似乎每个接触过计算机操作系统的人都懂,但如何回答好这个问题,是很考验程序员水平的。

要想给出全面深入的回答,首先要了解线程的概念,以及为什么需要线程编程。

什么是线程?

在互联网上,一般是这样定义的:线程是操作系统能够调度操作的最小单位,包含在进程中,是进程中的实际操作单位。

所以,你明白吗?我觉得这个定义纯属自说自话:新手看完一脸不解,老鸟看完不以为然。让我们通俗地解释一下。

假设你经营一家物业管理公司。刚开始业务量很小,什么都需要自己做。给老张家修好暖气管道后,马上去老李家换灯泡——这叫单线,所有工作都得按顺序进行。

后来业务扩大了,你雇了几个工人,这样你的物业管理公司可以同时为多户提供服务——这叫多线程,你就是主线程。

工人使用的工具由物业管理公司提供。这些工具是大家共享的,不属于一个人的——这叫多线程资源共享

工人工作都需要管钳,但是只有一个管钳——这叫冲突。解决冲突的方法有很多,比如排队,用完后在微信上通知同事等等。——这叫做线程同步

您将任务分配给工作人员——这被称为创建线程。之后,你必须告诉他开始,否则他会一直呆在那里——这叫做开始线程

如果一个工人(线程)的工作非常重要,你(主线程)可能会亲自监督一段时间的工作。如果没有指定时间,这意味着你将监督工作,直到工作完成——这被称为线程连接

业务不忙的时候,你在办公室喝茶。一到下班时间,你发一群微信,所有工人立刻放下工具,和你一起离开,不管手头的工作完成没完成。所以,如果有必要的话,你得避免在工人忙的时候发下班通知——这叫线程守护属性设置和管理(守护进程)。

后来你的公司扩大了,同时服务了很多生活社区。你在每个生活社区设立分公司,由分公司经理管理,运行机制和你的总公司差不多——这叫多流程,总公司叫主流程,分公司叫子流程。

总公司和分公司,分公司之间,都是独立的,不能借用,不能混用——这叫流程之间不能共享资源。分支机构之间可以通过专用的电话线进行通信——这被称为管道。分支机构还可以通过公司公告板交换信息——这被称为进程间共享内存。此外,分支之间还有各种合作手段来完成更大规模的操作——这就是所谓的进程间同步。分公司可以和总公司一起下班,也可以做完一天的所有工作再下班——这叫守护设置

什么是线程

线程是进程中包含的一个或多个执行单元。它只能属于一个进程,并且只能访问该进程拥有的资源。

它是流程中执行操作的最小单元,是流程中的一个实体,是流程独立调度和调度的基本单元。

线程本身并不拥有系统资源,只是在运行中拥有一点不可或缺的资源(计数器、寄存器和堆栈),但它可以与属于同一进程的其他线程共享进程拥有的所有资源。一个线程可以创建和取消另一个线程,同一进程中的多个线程可以并发执行。

当操作系统创建一个进程时,该进程会自动申请一个名为main thread(主线程)的线程。主线程将执行运行时宿主,运行时宿主将负责加载CLR(公共语言运行时)。

进程和线程的区别

进程:它是在并发执行的程序执行期间分配和管理资源的基本单位。它是一个动态的概念,是竞争计算机系统资源的基本单位。

线程:是一个流程的执行单元,是流程中内科的调度实体。独立运行的基本单元,比进程小。线程也称为轻量级进程。

一个程序至少有一个进程,一个进程至少有一个线程。

如果非要比较进程和线程的区别,可以从以下几个方面来看:

1。计划

线程是调度和分配的基本单位,进程是拥有资源的基本单位。

2。并发性

不仅进程可以并发执行,同一进程的多个线程也可以并发执行。

3。拥有资源

一个进程是一个有资源的独立单元。线程不拥有系统资源,但可以访问属于该进程的资源。

4。系统开销[/s2/]

在创建或取消一个进程时,由于系统要为它分配和回收资源,系统的开销明显大于创建或取消一个线程时。

流程有什么用?

一个进程可以说是一个“正在执行的程序”。程序是对指令、数据及其组织形式的描述,是一个无生命的实体。只有当处理器赋予程序生命(操作系统执行它)时,它才能成为一个活动的实体,我们称之为进程。

有了线程技术,我们可以在一个进程中创建多个线程,让它们同时做不同的工作。这些线程共享相同的内存,它们可以共享对象和资源。如果有冲突或者需要合作,可以随时沟通解决冲突或者保持同步。

但是,多线程技术并不是万能的,它有一个致命的缺点:无论你在一个进程中创建了多少个线程,它们总是被限制在一个CPU或者一个多核CPU的一个核上。这意味着多线程在宏观上是并行的,在微观上是串行的,多线程编程无法充分发挥多核计算资源的优势。这也是线程越多,速度越慢的原因,当线程数超过一定值时。

多进程技术正好弥补了多线程编程的不足。我们可以在每个CPU或者多核CPU的每个核上启动一个进程,如果需要,可以在每个进程中创建适当数量的线程,最大限度的解决问题。因为不在同一个内存区,所以相比线程,进程间的资源共享、通信、同步要麻烦得多,受到的限制也更多。

来源:传奇知识网,转载请注明作者或出处,尊重原创!

相关文章

发表评论
推荐文章