z_a*_*xis 9 ocaml ocsigen
我一直在测试使用Lwt的ocsigen.我猜Lwt的意思是"轻量级线程",对吗?如果是这样,我们怎么称它为"轻量级"?
似乎Lwt使用OS的线程并不轻(与Erlang和Haskell相比).
请点亮我,谢谢!
Dan*_*zli 16
是的,Lwt意味着轻量级线程,而Lwt的线程很轻.Lwt有一个协作的线程模型,只有一个lwt线程在一个系统线程上同时运行,直到它明确地产生控制.你有责任确保你的计算最终产生否则其他lwt线程可能永远不会运行.
但是Lwt还有一个系统线程池,用于执行阻塞系统调用或委派长时间运行的函数,这样它们就不会阻塞整个系统并阻止其他lwt线程运行.
你可以找到更多关于LWT的模型,并实现在这个文件(你可以得到原作者的网页上,在这里).
Jef*_*eld 8
Lwt的文档页面说:
[Lwt]提供非常轻量级的协作线程; "启动"一个线程是一个非常快速的操作,它不需要新的堆栈,新的进程或其他任何东西.此外,上下文切换非常快.事实上,我们将为每个系统调用启动一个线程非常容易.组成协作线程将允许我们编写高度异步的程序.
归档时间:
13 年,2 月 前
查看次数:
876 次
最近记录: