我有一个关于 lwt 的等待函数以及如何在我自己的自定义函数中使用它的问题,该函数将返回一个“Lwt.t 线程”。首先让我们向您展示一个示例。
open Lwt_io
open Lwt.Infix
let i, o = Lwt_io.pipe()
let get_int () =
let t, w = Lwt.wait() in
(*what do I do here to provide the sleeping thread*)
(*with a possible integer reply*)
Lwt_io.read_int(i) >>= fun i -> Lwt.wakeup w i;
t
let ans = get_int()
在上面的函数中,我调用 wait 来产生一个睡眠线程及其唤醒器,但我不确定如何为睡眠线程提供可能的整数回复,并且仍然能够从 get_int 函数返回一个睡眠线程。我提供了一行 (Lwt_io.read_int(i) >>= fun i -> Lwt.wakeup wi;) 似乎可行,但我不确定这是否是完成此任务的正确方法。任何指针或链接或评论?
注意:我问是因为将 Lwt_io.read_int(i) 添加到函数中是多余的。我可以删除 get_int 函数并调用 Lwt_io.read_int(i) 但我很好奇你将如何在没有冗余的情况下做到这一点。