小白速通嵌入式第一天————进程与线程

一、线程与进程区别

进程与线程区别使用“5W1H”法方便大家理解记忆:

1.定义

  • 进程是资源(CPU、内存)分配的基本单位。
  • 线程是CPU调度和分配的基本单位(程序执行的最小单位)。

2.什么时候用

  1. 创建和销毁较频繁使用线程,因为创建进程花销大。(空间)
  2. 需要大量数据传送使用线程,因为多线程切换速度快,不需要跨越进并行操作使用线程。线程是为了实现并行操作的一个手段。(时间)
  3. 安全稳定选进程,快速频繁选线程。(特性)

3.进程池与线程池

  •  当我们运行一个程序的时候,系统就会创建一个进程,并分配地址空间和其他资源,最后把进程加入就绪队列直到分配到CPU时间就可以正式运行。但真正运行代码的是进程里的线程
  • 在面向对象程序编程中,对象的构造与析构都是一个较为复杂的过程,较费时间,所以为了提高程序的运行效率,我们可以创建一个进程池(线程池),预先放一些进程(线程)进去,要用的时候就直接调用,用完之后再把进程归还给进程池,省下创建删除进程的时间,不过当然就需要额外的开销(资源占用、进程\线程管理开销等)。

4.优缺点

  • 每个进程有自己独立的地址空间和资源。
  • 多线程在一个进程里合作,可以共享同一进程里的共享内存和变量。
  1. 多进程更健壮,一个进程死了不影响其他进程。多线程比较脆弱,一个线程崩溃很可能影响到整个程序。
  2. 进程性能大于线程,线程的性能上限一定比不上进程。
  3. 创建多进程的系统花销远大于创建多线程。
  4. 多进程通讯因为需要跨越进程边界,不适合大量数据的传送,更适合小数据或者密集数据的传送。而多线程无需跨越进程边界,适合各线程间大量数据的传送。
  5. 多进程逻辑控制比多线程复杂,需要与主进程做好交互。虽然多线程逻辑控制比较简单,但是却需要复杂的线程同步和加锁控制等机制。
  6. 增加CPU可以增加进程却不能增加线程。

5.同步(通讯)方式

  • 进程

(1)管道(2)信号(3)共享内存(4)消息队列(5)信号量(6)socket

  • 线程

(1)信号量(2)条件变量(3)读写锁(4)互斥锁(5)自旋锁

二、进程的空间模型(linux内核空间模型)

 三、 同步、互斥、异步、阻塞、非阻塞

  • 都是对于线程而言。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值