当前位置: 首页 > news >正文

进程与线程

什么是进程?

前面我们说过,进程是一个正在运行的程序。比如,在Windows系统中,一个正在执行的.exe文件就是一个进程,每一个进程都有独立的内存空间和资源(内存资源,硬盘资源,宽带资源等等)。

由于进程的创建,销毁和切换的开销很大,为了解决开销大的这个问题,大佬们就提出了线程的概念。

什么是线程?

线程就是轻量级进程。同一个进程中的多个线程可以共享进程中的堆区资源、代码区和数据区的资源,但是每一个线程都有属于自己的虚拟机栈、本地方法栈和程序计数器,这使得多个线程在切换的过程中的开销不是很大,所以线程被称为轻量级进程。

进程与线程的联系

一个进程中可以包含多个线程,但是一个进程中至少要包含一个线程。进程为线程的运行提供了资源和空间,也就是说线程是要依附于进程执行的。且同一个进程内的线程可以共享该进程的资源。但是每一个线程在进程中都有都属于自己的栈区。

如下图

进程与线程的区别

1.根本区别:进程是操作系统进行资源分配的基本单位,线程是CPU上处理任务调度执行的基本单位。

2.资源开销:每一个进程都有自己独立的代码和数据空间(程序上下文),所以导致进程间的切换的开销很大。但对于线程来说,虽然每一个线程都有属于自己独立的运行栈和程序计数器,且同一个进程内的线程也会共享进程中的代码和数据空间(程序上下文),所以线程之间的切换的开销相对于进程来说,将低了很多。

3.包含关系:一个进程中可以包含多个进程,但是一个进程中必须要有一个线程,也就是主线程。

4.影响关系:进程都有属于自己的内存地址和资源空间,可以说,一个进程的是否成功运行不会影响另一个进程的成功运行。但是对于线程来说,同一个进程中的线程共享了进程中的一部分资源,所以,一个线程的崩溃有可能导致整个进程的崩溃。所以多进程要比多线程健壮。

5.内存分配:多个进程之间的内存地址和数据资源是相互独立的,但是多个线程之间共享了进程中的部分资源,线程之间不是完全独立的。

6.执行过程:每一个进程都有属于自己的程序执行入口,程序执行序列和程序执行出口,但是线程不能独立进行,必须依存于程序的运行中,线成的运行可以并发执行。


http://www.mrgr.cn/news/48897.html

相关文章:

  • 第3关:寻找两个等长有序序列的中位数
  • Linux内核 -- 编译之 Kconfig 字段解析
  • 【功能安全】什么是Aspice?
  • 【C++ 真题】B2078 含 k 个 3 的数
  • Apache Kafka基础认知-Part1
  • Python网络爬虫快速入门指南
  • 【hot100-java】K 个一组翻转链表
  • 字符串拼接方法性能对比和分析
  • 顺序栈与链队列
  • 6-蓝牙模块与数据包解析
  • Java分布式锁
  • Python从入门到高手6.3节-字符串操作方法
  • 聚类分析 | NRBO-GMM聚类优化算法
  • JDK 1.4主要特性
  • 【C#生态园】完整解读C#网络通信库:从基础到实战应用
  • 《DATE: Domain Adaptive Product Seeker for E-commerce》中文校对版
  • 嵌入式数据结构中顺序栈用法
  • 设计模式(学习笔记)
  • 二进制转十六进制
  • echarts 入门