Jac*_*ale 14 ocaml functional-programming
似乎很多人都说OCaml没有很好的并发能力,对Web服务器应用程序来说也不好.
我目前正在学习 ocaml的手册.似乎OCaml现在提供并发性.
我能知道为什么OCaml的并发/线程被认为是坏的吗?
我可以在OCaml中开发服务器应用程序吗?我可以遇到什么问题?
Chu*_*uck 20
请参阅并发与并行 - 有什么区别?.OCaml的线程提供并发性,因为您可以在上一个函数完成之前启动下一个函数.但OCaml不提供并行性,所以当第二个函数启动时,第一个函数必须被置于保持状态.两个线程无法同时运行,因此进程中的多个CPU绑定计算将相互阻塞,并且您无法在一个进程中最大化所有CPU核心.
这是人们对OCaml线程的抨击.这是否意味着您不能将OCaml用于服务器之类的东西?不,这是您在服务器设计中必须考虑的事情,但它通常不是一个显示器.哎呀,Node.js是直接单线程的,但它的主要目的是创建服务器.
OCaml支持多线程的使用.但是只有一个ocaml线程可以在给定的时间点运行,从来没有不同的ocaml线程的parellelism.
然而:
你可以分叉/使用多个进程.
外部代码(例如外部c/c ++ - 库)可以并行运行,只要它们与ocaml运行时的交互得到适当控制即可.
PS:链接的文档不是ocaml手册.关于OCaml,这是一本很好但却过时的书.
附录:当然,您可以在ocaml中开发服务器(实例:ocsigen - 一个Web服务器).这取决于你的需求,如果缺乏真正的线程concurreny是一个功能或缺点.
| 归档时间: |
|
| 查看次数: |
6686 次 |
| 最近记录: |