面试题:进程Process和线程Thread的区别?

 

进程是具有独立功能的程序,是系统资源分配的单位;线程是进程的一个实体,是CPU调度(程序执行)的单位,自己不拥有系统资源。同一进程的线程共享该进程所有资源,线程在执行过程中,需要协作同步。

进程包括 线程、内存、文件/网络句柄

线程包括 栈、PC(程序计数器)、TLS(Thread local storage)(分配内存、存放变量)

并发性:进程和线程都可以。

优劣:

  1. 线程之间通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式进行。
  2. 线程的调度与切换比进程快很多,成本也小
  3. 多进程(允许多个任务同时执行)更健壮,多线程(允许单个任务分成不同的部分执行)程序只要一个线程死掉,整个进程也死掉,而一个进程死掉并不会对另一个进程造成影响,因为进程有自己独立地址空间。

进程与线程的一个简单解释: 进程与线程的一个简单解释 - 阮一峰的网络日志

延伸问题:

1.如何通信,沟通的内容

进程/线程如何通信

进程可以通过管道、套接字、信号交互、共享内存、消息队列等等进行通信;而线程本身就会共享内存,指针指向同一个内容,交互很容易。

  1. 如何同步,协调的内容 进程调度、线程同步
  2. 内存问题

进程要分配内存,开销很大, 线程只要分配栈,一个PC就好,内存开销小

总结

进程是一个运动(进展)中的程序。进程间可以通信、同步、竞争,可能形成死锁。进程在一个时间只能干一件事情。

线程可以同时干两件事,(多线程被限制在一颗CPU内)线程是进程里的一个执行上下文或者执行序列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值