小编典典

进程和线程之间有什么区别?

java

进程和线程之间的技术区别是什么?

我感到像“过程”这样的词已被过度使用,并且还有硬件和软件线程。像Erlang这样的语言的轻量级进程怎么样?有确定的理由使用一个术语而不是另一个术语吗?


阅读 486

收藏
2020-05-02

共2个答案

小编典典

进程和线程都是独立的执行序列。典型的区别是(同一进程的)线程在共享内存空间中运行,而进程在单独的内存空间中运行。

我不确定您可能指的是“硬件”还是“软件”线程。线程是一种操作环境功能,而不是CPU功能(尽管CPU通常具有使线程有效的操作)。

Erlang使用术语“过程”,因为它没有公开共享内存的多程序模型。将它们称为“线程”将暗示它们具有共享内存。

2020-05-02
小编典典

Process

每个流程都提供执行程序所需的资源。进程具有虚拟地址空间,可执行代码,系统对象的打开句柄,安全上下文,唯一的进程标识符,环境变量,优先级类别,最小和最大工作集大小以及至少一个执行线程。每个进程都从单个线程(通常称为主线程)开始,但是可以从其任何线程中创建其他线程。

Thread

线程是进程中可以安排执行时间的实体。进程的所有线程共享其虚拟地址空间和系统资源。另外,每个线程维护异常处理程序,调度优先级,线程本地存储,唯一的线程标识符以及系统将用于保存线程上下文直到被调度的一组结构。线程上下文包括线程进程的地址空间中的线程的计算机寄存器集,内核堆栈,线程环境块和用户堆栈。线程也可以具有自己的安全上下文,可用于模拟客户端。

2020-05-02