F#中的异步工作流 - 并行执行,不等待结果

时间:2011-12-14 10:02:49

标签: asynchronous f#

是否可以在F#中使用Async工作流,并行执行多个异步操作但不等待结果?这有道理吗? :)

所以不要这样:

let runAll() =
    urlList
    |> Seq.map fetchAsync
    |> Async.Parallel 
    |> Async.RunSynchronously
    |> ignore

做这样的事情:

let runAll() =
    urlList
    |> Seq.map fetchAsync
    |> Async.Parallel 
    |> ignore

当然我需要启动操作,所以我尝试在fetchAsync函数中开始执行异步操作,然后只需调用函数即可:

let runAll() =
    urlList
    |> Seq.map fetchAsync
    |> ignore

但是,我的代码不再并行化了:/

我可能错过了一些明显的东西。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我的理解是你想要启动一整堆异步操作,然后在不等待它们完成的情况下做其他事情。在这种情况下,您希望使用Async.Start,如下所示:

let runAll() =
    urlList
    |> List.map Async.Start