面试必问题目“进程、线程对比”,包你会

简要说明

在C语言、C++等方向面试时,经常会被问道 进程、线程等问题,当然了10年前我刚开始找工作那会,也是各种煎熬“我又不写操作系统,为什么还要学这么底层的知识”,真想不通面试官是不是sha。。。

转眼间,我现在成了面试官,你说可笑不。。。。世事变化无常啊。。。。

 

为了让各位小伙伴把这块理解了,所以趁一个空闲时机把它们的对比简单整理了下

我用了通俗易懂的方式来进行描述,希望各位小伙伴能够看完哦 😃

 

抖擞抖擞精神。。。开始吧。。。

 

1. 通俗理解进程、线程

  • 进程,能够完成多任务,比如 在一台电脑上能够同时运行多个QQ
  • 线程,能够完成多任务,比如 一个QQ中的多个聊天窗口

1.1 定义的不同

  • 进程是系统进行资源分配和调度的一个独立单位.

  • 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.

1.2 区别

  • 一个程序至少有一个进程,一个进程至少有一个线程.
  • 线程的划分尺度小于进程(资源比进程少),使得多线程程序的并发性高。
  • 进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率
  •  
  • 线线程不能够独立执行,必须依存在进程中
  • 可以将进程理解为工厂中的一条流水线,而其中的线程就是这个流水线上的工人
  •  

1.3 优缺点

线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程正相反。

 

2. 通俗理解进程、线程

计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。

 

 image-20181214105041755

 

假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个CPU一次只能运行一个任务。

​ image-20181214105140348

进程就好比工厂的车间,它代表CPU所能处理的单个任务。任一时刻,CPU总是运行一个进程,其他进程处于非运行状态。

image-20181214105217583

一个车间里,可以有很多工人。他们协同完成一个任务。

image-20181214105251709

线程就好比车间里的工人。一个进程可以包括多个线程。

image-20181214105325618

车间的空间是工人们共享的,比如许多房间是每个工人都可以进出的。这象征一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。

image-20181214105353973

 

 

相信通过上面的通俗描述,你已经掌握了它们之间的区别

注意

1. 不要死记硬背,没有用

2. 一般来讲底层开发用到进程等操作,而如果编写应用层,几乎用不到,像js、html、css等那些语言

3. 一些其他的编程语言,像Python 除了上面说的进程、线程之外,还有协程,这个以后咱们有机会再说

4. 如果你还不知道Python怎样通过进程、线程 实现多任务编程,请参考http://books.howdoit.cn/004-MultiProcess/01day/01-%E5%BC%95%E5%85%A5%E5%A4%9A%E4%BB%BB%E5%8A%A1.html

 

我的博客:https://www.cnblogs.com/dong4716138/ 欢迎关注

网站地址:https://www.itprojects.cn/web/index/index.html欢迎添加到书签

 

最后的建议:

学会学习,要比学会某个知识点要强,学习编程的人那么多,为什么有那么多人干1、2年就不干了,写helloworld 谁不会!知道在哪写,写什么 这个才是重点

 

posted @ 2019-12-23 09:20  dong4716138  阅读(352)  评论(0编辑  收藏  举报