Multithreading 是否有任何全面的概述讨论了所有不同类型的线程?
有没有全面的概述来讨论所有不同类型的线程,以及它们与操作系统和调度程序的关系?我听过很多自相矛盾的信息,关于你是否想要某些类型的线程,或者线程池是一种性能提升还是一种性能打击,或者线程是很重的,所以你应该使用这些其他类型的线程,它们不能直接映射到真实的线程,但是这与线程池有什么不同。。。。我瘫痪了。有人怎么理解它?假设使用一种实际直接与线程交互的语言(我知道并发语言、隐式并行等,作为需要了解这些内容的替代,但我现在对此很好奇)线程是Windows win32体系结构中进程的主要构建块。您可以忽略绿色线程、光纤、绿色光纤、pthreads(POSIX)。超线程不存在。这就是“超线程”,它是一种CPU体系结构。您无法对其进行编码。你可以忽略它 这样就可以使用线程了。的确只有线程。内核线程是内核的线程,它位于机器虚拟内存加法空间的上2GB(有时是上1GB)中。你不能碰它。因此,您可以在大多数情况下忽略它(除非您正在编写内核模式的ring-0代码) 只有用户线程才是您应该关心的。它们有两种风格:主线程和辅助线程。每个进程至少有一个主线程,它是在创建进程(Multithreading 是否有任何全面的概述讨论了所有不同类型的线程?,multithreading,Multithreading,有没有全面的概述来讨论所有不同类型的线程,以及它们与操作系统和调度程序的关系?我听过很多自相矛盾的信息,关于你是否想要某些类型的线程,或者线程池是一种性能提升还是一种性能打击,或者线程是很重的,所以你应该使用这些其他类型的线程,它们不能直接映射到真实的线程,但是这与线程池有什么不同。。。。我瘫痪了。有人怎么理解它?假设使用一种实际直接与线程交互的语言(我知道并发语言、隐式并行等,作为需要了解这些内容的替代,但我现在对此很好奇)线程是Windows win32体系结构中进程的主要构建块。您可以忽略
CreateProcess
API调用)时为您创建的。辅助线程可以执行耗时较长的任务,否则会中断用户体验。在C#/,NET中,您可以使用BackgroundWorker类轻松创建和管理线程
线程有几个属性。这可能会导致所有类型的线程。但是,当您开始处理线程时,工作线程可能是您唯一应该担心的问题。以下是我的简要总结,请随意评论和编辑:
- 没有超线程,除非你在谈论英特尔的超线程,在这种情况下,它只是虚拟内核
- “绿色”通常表示“非OS级”(由VM调度/处理,VM可能会也可能不会将这些映射到多个OS级线程或进程)
- pthreads是一种API(Posix线程)
- 内核线程与用户线程是一个实现级别(用户线程在userland中实现,因此内核不知道它们,其调度程序也不知道它们),“线程”通常是“内核线程”的别名
- 光纤是系统级的协同路由。它们是线程,除了协同多任务而不是抢占