Multithreading 线程和轻量级线程之间有什么区别?

Multithreading 线程和轻量级线程之间有什么区别?,multithreading,Multithreading,我不太理解线程和轻量级线程之间的区别。从API的角度来看,这两种类型的线程都是相同的,那么区别到底在哪里呢。是在实现级别,轻量级线程由比OS线程调度器更高级别的运行时管理,还是其他什么?此外,是否有一组启发式方法供人们用来决定在特定场景中使用哪种类型的线程?在什么上下文中,轻量级线程可以表示由库实现的线程,例如,通过在事件处理层在轻量级线程之间切换,可以在库中模拟线程,这些轻量级线程排队并由单个操作系统线程处理,其优点是,由于上下文切换是在库中处理的,因此在数据处理完成时可以发生切换,因此下次该

我不太理解线程和轻量级线程之间的区别。从API的角度来看,这两种类型的线程都是相同的,那么区别到底在哪里呢。是在实现级别,轻量级线程由比OS线程调度器更高级别的运行时管理,还是其他什么?此外,是否有一组启发式方法供人们用来决定在特定场景中使用哪种类型的线程?

在什么上下文中,轻量级线程可以表示由库实现的线程,例如,通过在事件处理层在轻量级线程之间切换,可以在库中模拟线程,这些轻量级线程排队并由单个操作系统线程处理,其优点是,由于上下文切换是在库中处理的,因此在数据处理完成时可以发生切换,因此下次该轻量级线程激活时,不需要将数据加载回CPU缓存

轻量级线程也可以指协作线程(或光纤),在这些线程中,您必须显式地让步,以给其他轻量级线程一个机会,这具有相同的优势,因为上下文切换可以发生在您知道您已经处理完一些数据,因此您知道不再需要它的位置


另外,轻量级线程可能意味着正常的OS线程,而非轻量级线程可能意味着进程,进程中至少有一个线程,并且还有自己的内存和其他资源,它们比线程更昂贵,因为您无法在线程之间轻松共享数据,而操作系统创建进程的成本可能更高。

我记得有一段时间,线程通常被称为“轻量级进程”。有没有像操作系统/平台/语言这样的上下文?