0

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

4

1 回答 1

1

在什么情况下,轻量级线程可以表示由库实现的线程,例如可以通过在事件处理层在轻量级线程之间切换来在库中模拟线程,这些轻量级线程排队并由单个 OS 线程处理,这样做的好处是,由于在库中处理上下文切换,因此当数据处理完成时可以发生切换,因此下次该轻量级线程变为活动状态时不需要将数据加载回 CPU 的缓存中。

轻量级线程也可以指协作线程(或纤程),这些线程是您必须明确让步才能给其他轻量级线程机会的线程,这具有相同的优势,因为上下文切换可以发生在您认识的地方已经完成了一些数据的处理,所以你知道它不会再需要了。

或者,轻量级线程可能意味着正常的操作系统线程,非轻量级线程可能意味着进程,进程中至少有一个线程,并且还有自己的内存和其他资源,它们比线程更昂贵,因为你不能在线程之间共享数据很容易,并且操作系统创建进程可能是一项更昂贵的操作。

于 2012-09-13T04:48:08.387 回答