type
status
date
slug
summary
tags
category
icon
password
😀
在学docker多阶段构建时了解到这些概念,拿出来学习学习,嘿嘿嘿
 

📝 主旨内容

线程和进程

线程(Thread)和进程(Process)是操作系统中的两个重要概念,它们都是执行计算机程序的基本单位,但它们之间存在着一些重要的区别:
  1. 定义:
  • 进程是程序执行时的一个实例。它包含了程序的代码和相关资源的集合,例如内存、文件句柄、设备上下文等。
  • 线程是进程中的一个执行单元。一个进程中可以包含多个线程,它们共享进程的内存空间和资源。
  1. 资源分配:
  • 进程是操作系统进行资源分配和调度的基本单位,每个进程都拥有独立的内存空间和其他系统资源。
  • 线程是进程内的实际执行单元,同一进程内的线程共享相同的内存空间和其他资源。
  1. 通信和同步:
  • 不同进程之间的通信通常比较复杂,需要使用进程间通信(IPC)机制,如管道、消息队列、共享内存等。
  • 同一进程内的线程之间可以直接共享内存和其他资源,因此线程之间的通信和同步更加简单高效,可以使用共享内存、互斥锁、条件变量等机制。
  1. 切换开销:
  • 由于进程拥有独立的内存空间和资源,因此进程间的切换开销比较大,涉及到上下文切换和内存重定位等操作。
  • 线程是进程内的轻量级执行单元,线程间的切换开销相对较小,因为它们共享进程的内存空间,只需保存和恢复线程的上下文即可。
总的来说,线程是进程内的执行单元,它们共享进程的内存空间和其他资源,可以实现更加高效的并发执行。而进程是程序的一个实例,它拥有独立的内存空间和资源,不同进程之间通常需要复杂的通信和同步机制。
 
总的来说,线程是进程内的执行单元,它们共享进程的内存空间和其他资源,可以实现更加高效的并发执行。而进程是程序的一个实例,它拥有独立的内存空间和资源,不同进程之间通常需要复杂的通信和同步机制。

并行和并发

并发(Concurrency)和并行(Parallelism)是两个相关但不同的概念,它们描述了程序中任务执行的方式。
 
  1. 并发(Concurrency):
  • 并发是指系统中同时存在多个独立的活动或任务,并且这些任务在一段时间内都有可能被执行。
  • 在并发中,任务之间可以是交替执行的,也可以是同时执行的,但不保证真正的同时执行。
  • 并发通常通过多任务或多线程来实现,其中每个任务或线程独立执行,并且可能相互交错地执行。
  1. 并行(Parallelism):
  • 并行是指系统中同时执行多个任务或操作,即在同一时刻,多个任务同时进行。
  • 在并行中,任务之间真正同时执行,每个任务都在独立的处理器核心或计算单元上执行。
  • 并行通常需要具备多核处理器或多个计算单元,并且任务之间不存在依赖关系,可以独立执行。
简而言之,区别在于是否同时执行多个任务:
  • 并发是指多个任务之间可能同时进行,但不一定真正同时执行,任务之间可能交错执行。
  • 并行是指多个任务在同一时刻真正同时执行,每个任务都独立运行在不同的处理器核心或计算单元上。
  • 线程是指令执行的上下文,以及对一些数据的引用关系(可能是共享的)
  • 上下文包括一组寄存器的值、一个栈,以及其他与当前执行上下文相关的信息
  • 每个程序至少有一个线程
  • 有一个线程调度器(scheduler)来管理线程的执行
  • 程序可以创建新的线程,由调度器负责运行
这里放一个另一篇文章,可以参考学习
🗒️
Docker 多阶段构建
 
💡
有关这篇博客的任何问题,欢迎您在底部评论区留言,我会在github邮箱中第一时间收到邮件,让我们一起交流~
深度学习模型训练基本参数Docker 多阶段构建
  • Giscus
Zachary_Yang
Zachary_Yang
一个普通的干饭人🍚
Announcement
🎉欢迎来到我的博客🎉
-- 亲爱的读者们,你们好! ---
👏在这里,我希望能够和你们一起分享我对生活的观察、对技术的理解和热爱,暂将博客分为以下几个栏目👏
🌿 心绪漫卷边:一些小随笔
🌌 智绘非遇路:AI领域
😊 浅笑编程边:前后端开发
🛠 技术汇流石下:零散技术分享

祝好,
Zachary_Yang