gpt4 book ai didi

multithreading - 为什么绿色线程不能在多个内核上工作

转载 作者:行者123 更新时间:2023-12-03 12:43:53 26 4
gpt4 key购买 nike

在维基百科上:Green_threads被描述为通常无法在不解释原因的情况下在多核上运行。

On a multi-core processor, native thread implementations can automatically assign work to multiple processors, whereas green thread implementations normally cannot.



我了解操作系统可以将 native 线程分配给多核。有人可以解释为什么绿色线程不能在多核上运行吗?是因为绿色线程是从 native 线程派生/产生的,所以它们不能从 native 线程上移动到另一个?

最佳答案

I understand native threads can be assigned by OS to multi-cores. Can someone explain that why green threads can not run on multi-cores?



据我了解,绿色线程的重要目标之一是它们完全由软件/VM进行管理,而无需操作系统干预。它是帮助“正常”线程派生虚拟进程并在多个处理器上并行运行它们的操作系统。操作系统将多个绿色线程视为要在单个处理器上调度的单个线程。

引用 wikipedia definition:

Green threads emulate multithreaded environments without relying on any native OS capabilities, and they are managed in user space instead of kernel space, enabling them to work in environments that do not have native thread support.



在单个处理器中运行对绿线程有一些重要的好处,包括没有缓存的内存同步问题,更快的启动,更好的整体同步性能。这些好处中的大多数只有在相同的CPU中运行时才可能实现。

编辑:

关于Erlang和其他语言在其“绿色线程”实现中使用多个处理器的讨论很多。我会争辩说,即使该语言使用“绿色”一词来形容它们,也违反了经典的定义。当然,这些术语变得困惑不堪,但是许多术语将Erlang的线程描述为“绿色过程”以进行区分。它们绝对是轻量级的,但是即使有重叠但不同的实现,“绿色线程”的概念和定义也不应更改。我还没有找到Erlang文档 describe their threading paradigm为“绿色”。

这里有一些页面与此评估相符:
  • Native Vs Green Threads
  • Four for the Ages
  • Green Vs. Native Threads
  • What is the difference between "green" threads and "native" threads?
  • 关于multithreading - 为什么绿色线程不能在多个内核上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16965725/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com