Module Picos_lwt

Direct style Picos compatible interface to Lwt for OCaml 5.

This basically gives you an alternative direct style interface to programming with Lwt. All the scheduling decisions will be made by Lwt.

ℹ️ This is a system independent interface to Lwt. See Picos_lwt_unix for a Unix specific interface.

val await : 'a Lwt.t -> 'a

await promise awaits for the promise to resolve and returns the result.

⚠️ This may only be called on the main thread on which Lwt runs from inside a fiber started through run.

module type System = sig ... end

Signature for a module that Picos_lwt.run requires for interoperating with the system that Lwt runs on.

val run_fiber : (module System) -> Picos.Fiber.t -> (Picos.Fiber.t -> unit) -> unit Lwt.t

run_fiber (module System) fiber main runs the main program as the specified fiber as a promise with Lwt as the scheduler using the given System module. In other words, the main program will be run as a Lwt promise or fiber.

ℹ️ Inside main you can use anything implemented in Picos for concurrent programming. In particular, you only need to call run with a System module implementation at the entry point of your application.

⚠️ This may only be called on the main thread on which Lwt runs.

val run : ?forbid:bool -> (module System) -> (unit -> 'a) -> 'a Lwt.t

run (module System) main is equivalent to calling run_fiber with a freshly created fiber and main wrapped to capture the result of main.

The optional forbid argument defaults to false and determines whether propagation of cancelation is initially allowed.