进程和线程之间的技术差异是什么?
我感觉像 '过程' 这样的词被过度使用,还有硬件和软件线程。如Erlang这样的语言轻量级进程怎么样?是否有明确的理由使用一个术语而不是另一个术语?
进程和线程都是独立的执行序列。典型的区别在于(同一进程的)线程在共享内存空间中运行,而进程在不同的内存空间中运行。
我不确定你可能指的是什么 “硬件” 与 “软件” 线程。线程是一种操作环境功能,而不是 CPU 功能(尽管 CPU 通常具有使线程高效的操作)。
Erlang 使用术语 “进程”,因为它不公开共享内存多道程序模型。将它们称为 “线程” 意味着它们共享内存。
处理
每个进程都提供执行程序所需的资源。进程具有虚拟地址空间,可执行代码,系统对象的打开句柄,安全上下文,唯一进程标识符,环境变量,优先级类,最小和最大工作集大小以及至少一个执行线程。每个进程都使用单个线程启动,通常称为主线程,但可以从其任何线程创建其他线程。
线
线程是进程中可以调度执行的实体。进程的所有线程共享其虚拟地址空间和系统资源。此外,每个线程都维护异常处理程序,调度优先级,线程本地存储,唯一线程标识符以及系统将用于保存线程上下文直到调度的一组结构。线程上下文包括线程的机器寄存器集,内核堆栈,线程环境块和线程进程的地址空间中的用户堆栈。线程也可以有自己的安全上下文,可用于模拟客户端。
在 MSDN 上找到这个:
关于进程和线程
Microsoft Windows 支持抢占式多任务处理,它可以创建从多个进程同时执行多个线程的效果。在多处理器计算机上,系统可以同时执行与计算机上的处理器一样多的线程。
处理:
线:
我从Knowledge Quest借用了上述信息!博客 。