gpt4 book ai didi

multithreading - 用户线程、内核线程、软件线程、硬件线程

转载 作者:行者123 更新时间:2023-12-02 01:47:42 25 4
gpt4 key购买 nike

我正在研究线程和多线程概念,并且遇到了不同类型的线程:

  1. 用户线程:在内核之上受支持,无需内核进行管理。
  2. 内核线程:由操作系统直接支持和管理。
  3. 软件线程:由操作系统管理的执行线程。
  4. 硬件线程:某些处理器的一项功能,可以在某些情况下更好地利用处理器。

谁能澄清这些类型的线程之间的区别(我很困惑)?

谢谢

最佳答案

硬件线程允许您实际并行运行事物(这与并发不同)。这些对应于 CPU 核心的数量(具有诸如超线程之类的细微差别,可以使核心数量加倍)。

最重要的是操作系统(内核)线程。它是操作系统提供的抽象。操作系统会将它们映射到硬件线程。它通过内部调度程序来完成此操作,我们对此几乎没有控制权。请注意,理论上可能有任意多个操作系统线程(如果没有足够的内核来处理它们,它们只是等待 CPU),尽管所谓的上下文切换的价格将其限制在几千甚至更多。

用户线程(又名绿色线程、协程等,它们有很多名称)是由您的软件(例如编程语言及其运行时)提供的抽象。它们在操作系统线程之上运行,并通过内部(但在用户空间中)调度程序映射到它们。它们往往比操作系统线程(尤其是 I/O 绑定(bind)任务)执行得更好,因为它们具有较低的上下文切换开销,而且它们可以利用异步 api(例如非阻塞套接字),而无需生成操作系统线程(这也很昂贵)。由于它们很轻,因此您可以生成很多它们。有些人声称一次运行数百万个这样的线程。我见过数以万计的没有问题的。

不过我从未见过“软件线程”这个术语。但根据上下文,它意味着用户线程或内核线程。不太可能有其他含义。

顺便说一句,如果没有某些操作系统支持,任何真正的代码都无法运行。例如,如果您不希望事情并行运行,它可能会受到限制。但是,一旦您想要真正的并行性,操作系统线程就无法逃脱。用户线程的内部调度程序必须生成操作系统线程并以某种方式将用户线程映射到它们。尽管通常它是不可见的实现细节。

关于multithreading - 用户线程、内核线程、软件线程、硬件线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70708319/

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