我正在使用https://hackage.haskell.org/package/warp-3.3.24/docs/Network-Wai-Handler-Warp.html
我对haskell并发不太了解。假设我想在不同的端口上运行两个服务器:
所以我这样做:
do
Warp.run 3000 waiApp
Warp.run 3002 waiApp
然后服务器在 3000 上运行正在工作,但它永远不会到达下一行。
我尝试过:
do
forkIO $ Warp.run 3000 waiApp
forkIO $ Warp.run 3002 waiApp
但是好像不行,每个人fork后就停止了。
如何让它正常工作?我也想允许下面的代码也被执行。
更新:
所以目前的解决方案就是添加
forever (threadDelay 1000)
最后
main
,我想知道这是否是正确的方法。
所以,我们不应该让主线程终止。像这样的东西应该有效:
do
a1 <- Async.async $ Warp.run 3000 waiApp
a2 <- Async.async $ Warp.run 3002 waiApp
...
Async.waitAny [a1, a2]