假设我正在模拟某种类型的网络,并且有一个函数可以在Chans列表中广播一个值:
broadcast :: a -> [Receiver] -> IO ()
broadcast a = mapM_ (send a)
这将按顺序将数据“发送”到每个接收器。我希望不确定地向所有接收者广播。
感谢您提供任何线索。
答案 0 :(得分:3)
如何使用GHC的并发性?
broadcast :: a -> [Receiver] -> IO ()
broadcast a = mapM_ (forkIO . send a)
然后确保使用线程RTS(使用ghc -threaded
编译)。
答案 1 :(得分:2)
http://hackage.haskell.org/package/random-shuffle-0.0.2
broadcast a rs = do
g <- newStdGen
mapM_ (send a) $ shuffle' rs (length rs) g