Multithreading 进程与线程的简单解释

Multithreading 进程与线程的简单解释,multithreading,process,Multithreading,Process,有人能区分进程和线程吗。我在网上读了很多东西,但其中大多数都很混乱 进程是由处理器(CPU)执行的,并且有自己的资源,例如自己的地址空间。因此,它尽可能与操作系统处理的其他文件隔离。 相反,线程是一个“轻量级”进程,它与其他线程共享资源,特别是地址空间。这些线程可以使用公共地址空间轻松地相互通信。但由于它们不是孤立的,它们可能会以微妙的方式相互影响。 新增: “轻量级”意味着它需要的操作系统“管理”工作比进程少得多。例如,进程交换机需要使用内存管理单元切换地址空间,这需要相当长的时间。因此,在同

有人能区分进程和线程吗。我在网上读了很多东西,但其中大多数都很混乱

进程是由处理器(CPU)执行的,并且有自己的资源,例如自己的地址空间。因此,它尽可能与操作系统处理的其他文件隔离。
相反,线程是一个“轻量级”进程,它与其他线程共享资源,特别是地址空间。这些线程可以使用公共地址空间轻松地相互通信。但由于它们不是孤立的,它们可能会以微妙的方式相互影响。
新增:

“轻量级”意味着它需要的操作系统“管理”工作比进程少得多。例如,进程交换机需要使用内存管理单元切换地址空间,这需要相当长的时间。因此,在同一寻址空间中从一个线程切换到另一个线程要快得多。出于同样的原因,进程通信比同一寻址空间中线程之间的通信需要更多的操作系统工作。因此,轻量级仅仅意味着线程需要更少的操作系统工作。

请原谅我的类比,但请将进程视为身体,线程视为思想或灵魂

进程是表示与应用程序相关的资源的抽象,如内存(虚拟、物理等)、安全性和其他与内核相关的属性

线程是实际执行发生的地方。这是一个过程的生命。事实上,当要求操作系统运行一个进程时,它首先分配所有进程所需的资源,但在操作系统创建并开始执行进程的第一个线程和主线程之前,进程还没有开始运行

在进程最后一个线程停止执行后,进程开始实际的死亡(和清理)


我故意让东西不那么干。我希望我成功了:)

我将添加我自己选择的澄清声明:-)

  • 进程是操作系统运行的程序(例如,以.exe结尾的文件)。操作系统将进程分开,以便进程与所有其他进程并行运行,独立于所有其他进程的行为,并且不受其影响(除非它另有选择)。操作系统并不十分完美,所以这并不总是正确的,但这就是想法

  • 一个进程包含至少一个执行线程,即一个接一个执行的指令序列

  • 如果初始线程启动多个线程,则进程可以包含多个线程。每个线程都与其他线程并行运行其指令序列(或者至少这是操作系统努力实现的目标)

  • 通常情况下,进程中的线程通过访问共享资源(内存、网络连接等)进行交互

  • 您可以使用诸如信号量和互斥量之类的对象来确保线程在访问共享资源时独占使用该资源。其他争用资源的线程会被操作系统暂停,直到它再次可用,此时它们会恢复。这称为上下文切换

  • 一个进程可以访问命名的共享资源,并使用命名的信号量/互斥量以类似的方式与另一个进程交互。不同之处在于,操作系统必须切换整个进程的上下文,而不是整个线程。在大多数操作系统上,这需要更长的时间,因此出于效率考虑,通常避免使用


请添加让您困惑的内容?我相信我也能解释清楚,解释得很好。竖起大拇指+1-听起来不错!您已经提到-线程是一个“轻量级”过程。为什么呢你能解释一下吗?我有点累puzzled@geeko_zac当前位置我刚刚对上面的答案做了解释。