首页 >> 大全

线程和进程的区别是什么(线程和进程的区别是什么?程序员必须准备的一道高频面试题)

2023-05-14 大全 46 作者:考证青年

相信不少程序员在面试算法或开发岗位时都遇到过这个问题。尽管这个问题似乎每个接触过计算机操作系统的人都应该懂,但是如何能回答好这个问题却十分考验程序员的水平。

为了能够给出一个全面而深入的答案,首先我们要理解线程的概念,以及为什么需要线程编程。

什么是线程呢?

网上一般是这样定义的:线程()是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。

这么说,你听懂了吗?我觉得这样的定义纯粹是自说自话:新手看完了一脸懵,老鸟看完了不以为然。我们还是用“非专业”的外行话来解释一下吧。

线程和进程的区别是什么(线程和进程的区别是什么?程序员必须准备的一道高频面试题)

假设你经营着一家物业管理公司。最初,业务量很小,事事都需要你亲力亲为。给老张家修完暖气管道,立马再去老李家换电灯泡——这叫单线程,所有的工作都得顺序执行。

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

线程和进程的区别是什么(线程和进程的区别是什么?程序员必须准备的一道高频面试题)

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

工人们在工作中都需要管钳,可是管钳只有一把——这叫冲突。解决冲突的办法有很多,比如排队等候、等同事用完后的微信通知等——这叫线程同步。

你给工人布置任务——这叫创建线程。之后你还得要告诉他,可以开始了,不然他会一直停在那儿不动——这叫启动线程(start)。

如果某个工人(线程)的工作非常重要,你(主线程)也许会亲自监工一段时间,如果不指定时间,则表示你会一直监工到该项工作完成——这叫线程参与(join)。

业务不忙的时候,你就在办公室喝喝茶。下班时间一到,你群发微信,所有的工人不管手头的工作是否完成,都立马撂下工具,跟你走人。因此如果有必要,你得避免不要在工人正忙着的时候发下班的通知——这叫线程守护属性设置和管理()。

线程和进程的区别是什么(线程和进程的区别是什么?程序员必须准备的一道高频面试题)

再后来,你的公司规模扩大了,同时为很多生活社区服务,你在每个生活社区设置了分公司,分公司由分公司经理管理,运营机制和你的总公司几乎一模一样——这叫多进程,总公司叫主进程,分公司叫子进程。

总公司和分公司,以及各个分公司之间,工具都是独立的,不能借用、混用——这叫进程间不能共享资源。各个分公司之间可以通过专线电话联系——这叫管道。各个分公司之间还可以通过公司公告栏交换信息——这叫进程间共享内存。另外,各个分公司之间还有各种协同手段,以便完成更大规模的作业——这叫进程间同步。分公司可以跟着总公司一起下班,也可以把当天的工作全部做完之后再下班——这叫守护进程设置。

进程有什么用?

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

有了线程技术,我们就可以在一个进程中创建多个线程,让它们在“同一时刻”分别去做不同的工作了。这些线程共享同一块内存,线程之间可以共享对象、资源,如果有冲突或需要协同,还可以随时沟通以解决冲突或保持同步。

线程和进程的区别是什么(线程和进程的区别是什么?程序员必须准备的一道高频面试题)

不过,多线程技术不是万金油,它有一个致命的缺点:在一个进程内,不管你创建了多少线程,它们总是被限定在一颗CPU内,或者多核CPU的一个核内。这意味着,多线程在宏观上是并行的,在微观上则是分时切换串行的,多线程编程无法充分发挥多核计算资源的优势。这也是使用多线程做任务并行处理时,线程数量超过一定数值后,线程越多速度反倒越慢的原因。

线程和进程的区别是什么(线程和进程的区别是什么?程序员必须准备的一道高频面试题)

多进程技术正好弥补了多线程编程的不足,我们可以在每一颗CPU上,或者多核CPU的每一个核上启动一个进程,如果有必要,还可以在每个进程内再创建适量的线程,最大限度地使用计算资源解决问题。因为不在同一块内存区域内,和线程相比,进程间的资源共享、通信、同步等,都要麻烦得多,受到的限制也更多。

#pgc-card 。pgc-card-href {text-: none;: none;: block;width: 100%;: 100%; } #pgc-card 。pgc-card-href:hover {text-: none; } /*pc 样式*/ 。pgc-card {box-: -box;: 164px;: 1px solid #;: ;: 20px 94px 12px 180px;: ; } 。pgc-card::after {: ” “;: block;-left: 1px solid #;: 120px;: ;right: 76px;top: 20px; } 。pgc-cover {: ;width: 162px;: 162px;top: 0;left: 0;-size: cover; } 。

pgc- {: ;: ;top: 50%;--: (-50%);: (-50%); } 。pgc--title {font-size: 18px;color: #222;line-: 1;font-: bold;: ;text-: ;white-space: ; } 。pgc--desc {font-size: 14px;color: #444;: ;text-: ;-top: 9px;: ;line-: 1。2em;: ---box;--line-clamp: 2;--box-: ; } 。

pgc--price {font-size: 22px;color: #;-top: 18px;line-: 1em; } 。pgc-card-buy {width: 75px;: ;right: 0;top: 50px;color: #;font-size: 14px;text-align: ; } 。pgc-buy-text {-top: 10px; } 。pgc-icon-buy {: 23px;width: 20px;: -block;: url(); } #pgc-card 。pgc-card-href {text-: none;: none;: block;width: 100%;: 100%; } #pgc-card 。pgc-card-href:hover {text-: none; } /*pc 样式*/ 。

pgc-card {box-: -box;: 164px;: 1px solid #;: ;: 20px 94px 12px 180px;: ; } 。pgc-card::after {: ” “;: block;-left: 1px solid #;: 120px;: ;right: 76px;top: 20px; } 。pgc-cover {: ;width: 162px;: 162px;top: 0;left: 0;-size: cover; } 。pgc- {: ;: ;top: 50%;--: (-50%);: (-50%); } 。

pgc--title {font-size: 18px;color: #222;line-: 1;font-: bold;: ;text-: ;white-space: ; } 。pgc--desc {font-size: 14px;color: #444;: ;text-: ;-top: 9px;: ;line-: 1。2em;: ---box;--line-clamp: 2;--box-: ; } 。pgc--price {font-size: 22px;color: #;-top: 18px;line-: 1em; } 。pgc-card-buy {width: 75px;: ;right: 0;top: 50px;color: #;font-size: 14px;text-align: ; } 。

pgc-buy-text {-top: 10px; } 。pgc-icon-buy {: 23px;width: 20px;: -block;: url(); } #pgc-card 。pgc-card-href {text-: none;: none;: block;width: 100%;: 100%; } #pgc-card 。pgc-card-href:hover {text-: none; } /*pc 样式*/ 。pgc-card {box-: -box;: 164px;: 1px solid #;: ;: 20px 94px 12px 180px;: ; } 。pgc-card::after {: ” “;: block;-left: 1px solid #;: 120px;: ;right: 76px;top: 20px; } 。

pgc-cover {: ;width: 162px;: 162px;top: 0;left: 0;-size: cover; } 。pgc- {: ;: ;top: 50%;--: (-50%);: (-50%); } 。pgc--title {font-size: 18px;color: #222;line-: 1;font-: bold;: ;text-: ;white-space: ; } 。pgc--desc {font-size: 14px;color: #444;: ;text-: ;-top: 9px;: ;line-: 1。

2em;: ---box;--line-clamp: 2;--box-: ; } 。pgc--price {font-size: 22px;color: #;-top: 18px;line-: 1em; } 。pgc-card-buy {width: 75px;: ;right: 0;top: 50px;color: #;font-size: 14px;text-align: ; } 。pgc-buy-text {-top: 10px; } 。pgc-icon-buy {: 23px;width: 20px;: -block;: url(); }

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了