为什么OCaml的线程被认为是“不够”?

看起来很多人都说OCaml并没有很好的并发能力,并且它对Web服务器应用程序也不好。

我目前正在学习ocaml的手册。 看来OCaml现在提供了并发性。

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

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


看并发与并行 - 有什么区别? OCaml的线程提供并发性,因为您可以在上一个函数完成之前启动下一个函数。 但OCaml不提供并行性,所以当第二个函数启动时,第一个函数必须暂停。 两个线程不能同时运行,因此一个进程中的多个CPU限制计算会相互阻塞,并且不能在一个进程中最大化所有CPU内核。

OCaml的线程就是人们的牛肉。 这是否意味着你不能使用OCaml作为服务器之类的东西? 不是的。这是你在服务器设计中必须考虑的事情,但它通常不是一个炫耀者。 哎呀,Node.js是直接单线程的,但其主要目的是创建服务器。


OCaml支持多线程的使用。 但是只有一个ocaml线程可以在给定的时间点运行,不会有不同ocaml线程的相关性。

然而:

  • 你可以派生/使用多个进程。

  • 外部代码(例如,外部c / c ++库)可以并行运行,只要它们与ocaml运行时间的交互被正确控制。

  • PS:链接的文件不是ocaml手册。 这本关于OCaml的书很好,但过时了。

    附录:当然,您可以在ocaml中开发服务器(现场示例:ocsigen - 一个Web服务器)。 这取决于你的需求,如果缺乏真正的线程concurreny是一个特点或缺点。

    链接地址: http://www.djcxy.com/p/13929.html

    上一篇: Why OCaml's threading is considered as `not enough`?

    下一篇: Can Ruby Fibers be Concurrent?