Lwt是否意味着“轻量级螺纹”?

时间:2012-08-08 00:43:39

标签: ocaml ocsigen

我一直在测试使用Lwt的ocsigen。我猜Lwt的意思是“轻量级线程”,对吗?如果是这样,我们怎么称它为“轻量级”?

似乎Lwt使用OS的线程并不轻(与Erlang和Haskell相比)。

请点亮我,谢谢!

2 个答案:

答案 0 :(得分:16)

是的,Lwt意味着轻量级线程,而Lwt的线程很轻。 Lwt有一个协作的线程模型,只有一个lwt线程在一个系统线程上同时运行,直到它明确地产生控制。你有责任确保你的计算最终产生否则其他lwt线程可能永远不会运行。

然而,Lwt也有pool of system threads用于执行阻塞系统调用或委派长时间运行的函数,这样它们就不会阻塞整个系统并阻止其他lwt线程运行。

您可以在this论文中找到有关Lwt模型和实施的更多信息(您可以在原作者的网页上找到here)。

答案 1 :(得分:8)

documentation page for Lwt说:

  

[Lwt]提供非常轻量级的协作线程; “启动”一个线程是一个非常快速的操作,它不需要新的堆栈,新的进程或其他任何东西。此外,上下文切换非常快。事实上,我们将为每个系统调用启动一个线程非常容易。组成协作线程将允许我们编写高度异步的程序。