假设我想在Haskell中编写服务器。具有高并发性和简单处理的那种。对故障具有鲁棒性并提供高可用性的那种。 Erlang会有好处的那种。
从一个框架或一组基元开始,一套好的工具是什么?
答案 0 :(得分:19)
这正是Haskell擅长的。它具有出色的多核并行支持,因此当您使用更多线程时,您可以轻松利用额外的内核。但请记住,Haskell的目标是在多核上有很好的表现,Erlang有点不同,更多地强调分布式系统,而不是原始性能(例如,参见基准测试游戏,http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=ghc&lang2=hipe Haskell几乎总是更快,并且使用更少的内存)。
现在,开始:
您可以从Real World Haskell中的示例开始,了解forkIO和Haskell的轻量级线程,http://book.realworldhaskell.org/read/concurrent-and-multicore-programming.html
GHC关于并发工具的文档,http://haskell.org/haskellwiki/GHC/Concurrency
要查看大规模,可扩展的网络代码的库是事件库:http://github.com/tibbe/event,这使得使用epoll作为接受来自网络的事件的方法变得容易。这是一个简单的例子:http://donsbot.wordpress.com/2010/01/17/playing-with-the-new-haskell-epoll-event-library/
有关回归基础知识,请参阅Simon Marlow关于构建并发Web服务器的教程:http://www.haskell.org/~simonmar/bib/webserverjfp_abstract.html
你应该觉得这个任务相对简单,有趣!
答案 1 :(得分:1)
开始的好地方是Simon Peyton Jones The Awkward Squad的开创性论文。
......我最近听到了一个你可能会发现相关的话题。请参阅galois website
上的详细信息