An RP BUG with haskell concurrency

这两天被一个RP BUG搞的很是头疼,最后发现原来编译的时候可以加入-threaded参数,世界突然清静了…
前段时间我看到一个用haskell写的blog platform(http://mult.ifario.us/),很是激动,于是档来仔细研究看看。作者在他的Blog上有非常详细的设计过程的记录,代码看起来比较平滑,没有特别难以理解的地方。而我正有意做一个wiki试试,于是仿照一番,开始试试API。不妙的是才20行的代码就遭遇了神奇的BUG,fastcgi服务端工作情况相当不良好。单线程是跑得很Happy,但是多线程后就有很高概率无响应,而且线程原多,出事概率越高。于是我开始胡乱猜测,起先我试图分析一下这个fastcgi程序线程情况,但是forkIO得到的是轻量级thread,由ghc runtime维护,貌似在运行状态下查看;于是我又在fastcgi库里面加了不少打印试图确定导致无响应或者挂起的确切位置,怎奈缺乏网络编程以及并发程序的经验,弄来弄去只是头大。最后在一眼扫过concurrent库(http://haskell.org/ghc/docs/latest/html/libraries/base/Control-Concurrent.html)的时候扫过一句话,原来可以在编译的时候加入-threaded参数,于是一试之下程序立马跑得飞快。我的乖乖隆迪东,被搞昏死掉了。不过话说来来,还是要好好的再看看haskell的并发模型,不清不楚,只会死的不明不白。
此条目发表在My Life分类目录。将固定链接加入收藏夹。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

您正在使用您的 WordPress.com 账号评论。 登出 /  更改 )

Google photo

您正在使用您的 Google 账号评论。 登出 /  更改 )

Twitter picture

您正在使用您的 Twitter 账号评论。 登出 /  更改 )

Facebook photo

您正在使用您的 Facebook 账号评论。 登出 /  更改 )

Connecting to %s