【问题标题】:Why saying that a thread is a "light-weight process" is not technically correct?为什么说线程是“轻量级进程”在技术上是不正确的?
【发布时间】:2016-10-16 14:30:29
【问题描述】:

在我的 Java 分布式编程课程中,我的老师问了这个问题。他认为,即使这是一个常用的定义,也不完全正确。
什么东西可以让线程被认为是重量级进程?

【问题讨论】:

  • 你请老师提供适当的参考资料......

标签: java parallel-processing operating-system distributed-programming


【解决方案1】:

线程和进程之间有一个明确的区别 - 两个或多个线程共享分配给进程的内存空间,而分配给 2 个进程的内存空间是分开的。

哪些因素可以使线程被视为 重量级进程?

同样,线程与进程不同,所以这个问题在技术上仍然是不正确的。

【讨论】:

  • 注意:进程可以拥有“共享内存”,但这不是默认设置。
【解决方案2】:

重/轻是关于他们占用了多少资源以及切换任务的成本是多少。在 Linux 上,线程也被视为具有自己的进程 ID 的进程,但是它使用的资源不如您添加每个线程的资源多,因为它与现有线程共享内存。

线程的更轻量级版本是使用延续。这对于短调用堆栈来说可能是最便宜的,因为它是一个完全用户空间的实现。

线程比进程更轻量级。但是……

  • 还有更轻量级的共享工作,在某些情况下线程很昂贵。
  • 它并不是真正的进程(Linux 在某些方面假装线程是进程)

【讨论】:

  • 感谢您的回答,如果您能进一步争论,那就太好了。
  • @1z10 你想知道什么。这是一个相当复杂的主题。
  • 只是如果它与正在创建的线程数量有关,这使得它们被认为是重量级的,或者它是否与使用同步块的需要有关,或者可能在内核级别更深层次以及开销/缺点......提前致谢。
  • @1z10 查看我的更新答案。您在 Linux 上可以拥有的线程/进程数是相同的。只有当你有多个线程时才需要使用同步,你不能跨多个进程使用它。
猜你喜欢
  • 2011-01-17
  • 1970-01-01
  • 2012-05-16
  • 2011-11-19
  • 1970-01-01
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
相关资源
最近更新 更多