进程和线程之间的技术区别是什么?
我感觉像“进程”这样的词被过度使用了,而且还有硬件和软件线程。像Erlang这样的语言中的轻量级进程怎么样?是否有明确的理由使用一个术语而不是另一个术语?
进程和线程之间的技术区别是什么?
我感觉像“进程”这样的词被过度使用了,而且还有硬件和软件线程。像Erlang这样的语言中的轻量级进程怎么样?是否有明确的理由使用一个术语而不是另一个术语?
当前回答
来自Erlang编程(2009):Erlang并发是快速和可扩展的。它的进程是轻量级的,因为Erlang虚拟机不会为每个创建的进程创建OS线程。它们在VM中创建、调度和处理,与底层操作系统无关。
Erlang实现了一个抢先调度程序,它允许每个进程在一段设定的时间内运行,而不会阻塞系统线程太长时间,这给了每个进程一些执行的cpu时间。如果我没有弄错的话,系统线程的数量取决于内核的数量,如果负载变得不均匀,进程可以从一个线程中删除,然后移动到另一个线程,这都是由Erlang调度程序处理的。
其他回答
进程和线程的真实示例这将为您提供有关线程和进程的基本信息
我从Scott Langham的回答中借用了上述信息-谢谢
进程:正在执行的程序称为进程
线程:线程是一种基于“一个与另一个”的概念与程序的其他部分一起执行的功能,因此线程是进程的一部分。。
进程是代码、内存、数据和其他资源的集合。线程是在进程范围内执行的一系列代码。您可以(通常)在同一进程中同时执行多个线程。
示例1:JVM在单个进程中运行,JVM中的线程共享属于该进程的堆。这就是为什么多个线程可以访问同一个对象。线程共享堆并拥有自己的堆栈空间。这就是一个线程对方法及其局部变量的调用如何保持与其他线程的线程安全。但是堆不是线程安全的,必须同步以确保线程安全。
每个进程都是一个线程(主线程)。但每个线程都不是一个进程。它是流程的一部分(实体)。