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

时间:2012-09-13 04:29:47

标签: multithreading

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

1 个答案:

答案 0 :(得分:1)

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

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

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