2012-03-29 102 views
1

所以我们在Uni做这个任务,我有一个认真的渴望去完成haskell中的任务。它是一个股票交易引擎的模拟。情况是,我们有数据从csv进入,我们希望解析每条记录,并以某种方式处理它,具体取决于分配给哪个市场阶段。使用haskell的理由是,我将交易引擎视为重要的功能系统。Haskell交易引擎

我曾经有过haskell的经验,但只有很小的经验,从来没有这么大的东西。

我们想要运行一个线程,它将csvs导入未处理的订单队列中,然后让主程序访问此队列以处理每个订单。但是,我怎么能做到这一点?我知道在C#中,我只是设置了类,以便它可以访问可容纳未处理队列的CSVParser类。这也意味着导入线程将持续贯穿所有市场阶段,或者直到它完成导入csv文件。

任何有关如何实现这一目标的指导都非常棒! (不是在寻找一个完整的脚本,只需要看看haskell中的什么东西)

回答

4

目前还不清楚你要求什么。

  • 要启动一个新线程,请使用Control.Concurrent中的forkIO
  • 要将数据从一个线程排到另一个线程,您可能会对Control.Concurrent.Chan中的Chan感兴趣。其他Control.Concurrent。*抽象是可用的(也有stm包,如果你发现自己需要更重的任务)。
  • 对于解析CSV,请在Hackage package list中搜索“CSV”;我没有使用Haskell解析CSV,所以我不能建议使用哪一个。
+0

你的第二点完美地回答了它。我假设陈的想法是,你可以有两个线程共享相同的频道?换句话说,我的未处理队列只是成为他们共享的渠道。 – Abstract 2012-03-29 23:54:28

+1

是的,您可以有一个(或多个)线程写入该通道,另一个线程(或更多)从中读取。 – dave4420 2012-03-30 00:07:16

+0

谢谢你们!是完美的。要马上开始编码 – Abstract 2012-03-30 00:50:10