Ich habe eine Frage über lwt's Wartefunktion und wie ich es in meiner eigenen benutzerdefinierten Funktion verwenden würde, die einen 'a Lwt.t-Thread zurückgeben würde. Zuerst zeigen wir Ihnen ein Beispiel.Ocaml Lwt.wait()
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()
In der obigen Funktion warten nenne ich einen Schlaf Faden plus seine wakener zu produzieren, aber ich bin nicht sicher, wie der Schlaf Thread mit einer möglichen ganzzahligen Antwort zu geben und noch einen Schlaf Faden von den get_int zurückkehren können Funktion. Ich habe eine Zeile (Lwt_io.read_int (i) >> = Spaß i -> Lwt.wakeup wi;) zur Verfügung gestellt, die zu funktionieren scheint, aber ich bin mir nicht sicher, ob dies der richtige Weg ist, dies zu erreichen. Irgendwelche Zeiger oder Links oder Kommentare?
Hinweis: Ich frage, weil das Hinzufügen von Lwt_io.read_int (i) zur Funktion redundant ist. Ich könnte einfach die Funktion get_int eliminieren und einfach Lwt_io.read_int (i) aufrufen, aber ich bin gespannt, wie Sie das ohne die Redundanz tun würden.