Functional programming 为什么是OCaml';s线程被认为“不够”?

Functional programming 为什么是OCaml';s线程被认为“不够”?,functional-programming,ocaml,Functional Programming,Ocaml,似乎很多人都在说OCaml没有很好的并发能力,它也不适合web服务器应用程序 我现在正在学习。似乎OCaml现在提供了并发性 我能知道为什么OCaml的并发/线程被认为是不好的吗 我可以用OCaml开发服务器应用程序吗?我可能会遇到什么问题?OCaml支持使用多线程。但是在一个给定的时间点上只能运行一个ocaml线程,不同的ocaml线程之间从来没有并行性 然而: 您可以分叉/使用多个进程 外部代码(例如外部c/c++库)可以并行运行,只要它们与ocaml运行时的交互得到适当控制 备注:链接

似乎很多人都在说OCaml没有很好的并发能力,它也不适合web服务器应用程序

我现在正在学习。似乎OCaml现在提供了并发性

我能知道为什么OCaml的并发/线程被认为是不好的吗


我可以用OCaml开发服务器应用程序吗?我可能会遇到什么问题?

OCaml支持使用多线程。但是在一个给定的时间点上只能运行一个ocaml线程,不同的ocaml线程之间从来没有并行性

然而:

  • 您可以分叉/使用多个进程

  • 外部代码(例如外部c/c++库)可以并行运行,只要它们与ocaml运行时的交互得到适当控制

备注:链接的文档不是ocaml手册。这是一本关于OCaml的很好但过时的书

附件: 当然,您可以在ocaml中开发服务器(实例:)。 如果缺少真正的线程并发是一个特点或缺点,这取决于您的需要。

请参阅。OCaml的线程提供并发性,因为您可以在上一个函数完成之前启动下一个函数。但是OCaml不提供并行性,所以当第二个函数启动时,第一个函数必须挂起。两个线程不能同时运行,因此一个进程中的多个CPU绑定计算将相互阻塞,并且不能在一个进程中最大化所有CPU核心


这是人们的牛肉和OCaml的线。这是否意味着不能将OCaml用于服务器之类的东西?不,这是你在服务器设计中必须考虑的事情,但它通常不是一个好东西。见鬼,Node.js是单线程的,但它的主要用途是创建服务器。

噢,Node.js是单线程的吗?但是Node.js如何使用多个cpu?@JacksonTale:您运行一组节点进程来充分利用多个cpu核心。好的,现在就明白了。但是对于节点进程集群,每个进程都占用一个端口?有没有负载平衡器?你能告诉我建筑的设计吗?@JacksonTale-与其在评论中追求这个切线,也许你应该把它作为一个问题发布。@如果并发性与并行性不同,那么您是否认为《实践中的java并发性》一书的名称是错误的?