我需要在同一个 monad 的上下文中运行多个并发进程,例如Connection
. 我希望像下面这样的东西会起作用:
main = runConnection connectionSettings $ do
forkIO action1
forkIO action2
action3
但forkIO
需要在IO
上下文中运行,并且也需要在其中执行操作IO
。
假设这些动作有一个 type :: Connection ()
,需要做什么来同时运行它们(要实现哪些实例等等)?
目前我正在解决这个问题,但显然这是不对的:
main = do
forkIO $ runConnection connectionSettings action1
forkIO $ runConnection connectionSettings action2
runConnection connectionSettings action3