进程与线程

进程与线程

进程

进程是程序的一次执行活动,是系统进行资源分配和调度的一个独立单位,程序是静态的,进程是动态的。

线程

线程是一个进程内部的一个控制序列,我的理解为线程是进程的一个的功能块

线程的优点

  1. 易于调度
  2. 提高了并发性
  3. 开销小(线程对资源的需求远小于进程)

线程与进程的区别

  1. 一个线程只能属于一个进程,一个进程可以拥有多个线程
  2. 属于同一个进程的线程共享该进程的所有资源,但是每个线程拥有自己独立的栈,不同的进程相互独立
  3. 线程之间切换代价小,进程间切换代价大
  4. 进程是程序的一次执行,线程是程序中的一段程序的执行
  5. 每个进程都有独立的内存空间,线程共享其所属进程的内存空间

多进程与多线程的区别

1.

多进程的数据是分开的(每个进程都有独立的内存空间),所以实现共享的时候比较麻烦需要进行进程间通信,同步简单。
多线程共享进程数据,共享简单,同步复杂。
进程/线程之间进行通信的方法:
1. 临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。
2. 互斥量:为协调共同对一个共享资源的单独访问而设计的。
3. 信号量:为控制一个具有有限数量用户资源而设计,它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目
4. 事件: 通过通知操作的方式来保持线程的同步,还可以方便实现对多个线程的优先级比较的操作

2.

多进程占用内存多,切换复杂,CPU利用率低
多线程占用内存少,切换简单,CPU利用率高

3.

多进程创建销毁切换复杂,速度慢
多线程创建销毁简单,速度快

4.

多进程编程简单,调试简单
多线程编程复杂,调试复杂

5.

可靠性:
多进程间不会互相影响
一个线程挂掉将导致整个进程挂掉

6.

多进程适应于多核,多机分布,如果一台机器不够,扩展到多台机器比较简单
多线程适应于多核分布

Summary

多进程的有点在于内存隔离,单个进程出现问题不会导致整个应用崩溃,缺点是进程间调用通讯和切换的开销较大,试用于目标自功能间的交互少
如果资源性能许可,设计由多个子应用程序来组合完成目标。
多线程的有点在于并行性,开销小,缺点是没有内存隔离,单个线程的崩溃会导致整个系统的崩溃。适用于存在大量IO,等需要和用户交互的场景,
使用多线程有利于提高系统的并行性和用户界面快速响应从而提高友好性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值