以下使用async
包的代码会做什么:
action <- async $ mapM_ someFunc someList
wait action
这只会产生mapM_
发生的单个线程吗? (暗示这不仅仅是mapM_ someFunc someList
)
或者它是否会异步执行mapM_
操作(或mapConcurrently
是获取此类行为的唯一方法)?
答案 0 :(得分:1)
这只会产生一个发生mapM_的线程吗?
是的,它将分叉一个线程并立即阻止等待mapM_完成并返回()
(或抛出异常)。
async
包非常简单;您可能希望查看源代码以了解它们如何一起工作并了解有关底层haskell并发原语的更多信息。