进程和线程之间的技术区别是什么?
我感到像“过程”这样的词已被过度使用,并且还有硬件和软件线程。 像Erlang这样的语言的轻量级进程怎么样? 有明确的理由使用一个术语而不是另一个术语吗?
#1楼
线程在共享内存空间中运行,但是进程在单独的内存空间中运行
线程是一个轻量级进程,但是一个进程是一个重级进程。
线程是进程的子类型。
#2楼
关于并发编程的更多解释
流程具有独立的执行环境。 流程通常具有一套完整的私有基本运行时资源; 特别是,每个进程都有自己的存储空间。
线程存在于一个进程中-每个进程至少有一个。 线程共享进程的资源,包括内存和打开的文件。 这样可以进行有效的通信,但可能会出现问题。
牢记普通人,
在计算机上,打开Microsoft Word和Web浏览器。 我们称这两个过程 。
用Microsoft Word,您输入一些东西,它将自动保存。 现在,您将观察到编辑和保存是并行进行的-在一个线程上进行编辑,然后在另一个线程上进行保存。
#3楼
流程 :正在执行的程序称为流程
线程 :线程是一种功能,可根据“一个与另一个”的概念与程序的另一部分一起执行,因此线程是进程的一部分。
#4楼
以下是我从The Code Project的一篇文章中得到的内容。 我想它可以清楚地说明所有需要的内容。
线程是将工作负载拆分为单独的执行流的另一种机制。 线程比进程轻。 这意味着,与完整的过程相比,它提供的灵活性较差,但由于操作系统设置较少,因此启动速度更快。 当一个程序包含两个或多个线程时,所有线程共享一个内存空间。 为进程分配了单独的地址空间。 所有线程共享一个堆。 但是每个线程都有自己的堆栈。
#5楼
试图回答与Java世界有关的问题。
进程是程序的执行,但是线程是进程内的单个执行序列。 一个进程可以包含多个线程。 线程有时称为轻量级进程 。
例如:
示例1:JVM在单个进程中运行,并且JVM中的线程共享属于该进程的堆。 这就是为什么多个线程可以访问同一对象的原因。 线程共享堆并拥有自己的堆栈空间。 这样一来,一个线程对方法及其局部变量的调用就可以使线程免受其他线程的影响。 但是堆不是线程安全的,因此必须同步以确保线程安全。
示例2:程序可能无法通过读取按键来绘制图片。 该程序必须充分注意键盘输入,并且一次不能处理多个事件的能力将导致麻烦。 解决此问题的理想方法是同时无缝执行一个程序的两个或多个部分。 线程使我们能够做到这一点。 这里的“绘制图片”是一个过程,而读取按键是“子”过程(线程)。