gpt4 book ai didi

ocaml - 让利用数据依赖性来增加并行性吗

转载 作者:行者123 更新时间:2023-12-02 13:54:56 25 4
gpt4 key购买 nike

我试图通过几个例子来弄清楚 lwt 具体在做什么:

如果我有:

let%lwt x = f () in
let%lwt y = g () in
return ()

这是先运行 f,然后运行 ​​g,还是因为 y 不依赖于 x,所以它会并行运行吗?

最佳答案

该特定示例按顺序运行 f ()g (),即 g () 直到 Promise 之后才开始f()返回的结果已解析。

看到这一点的方法是,当查看时

let%lwt x = e in
e'

意识到e'成为回调的主体,只有当x可用时才会运行。所以,在问题的代码中,Lwt 首先看到:

(* Do this first. *)
let%lwt x = f () in

(* Do this once is available. *)
let%lwt y = g () in
return ()

并且,一旦 x 可用,它就会留下

(* Do this next. *)
let%lwt y = g () in

(* Do this once y is available. *)
return ()

要避免这种序列化,请先调用 f ()g (),无需任何干预 let%lwt,将变量绑定(bind)到Promise x'y' 这些函数返回,并等待 Promise:

let x' = f () in
let y' = g () in
let%lwt x = x' in
let%lwt y = y' in
return ()

(回答标题,Lwt 不使用数据依赖关系。我不认为库可以访问这种数据依赖信息)。

关于ocaml - 让利用数据依赖性来增加并行性吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58049404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com