val run : 'a Lwt.t -> 'a
Lwt_main.run p
calls the Lwt scheduler, performing I/O until p
resolves. Lwt_main.run p
returns the value in p
if p
is fulfilled. If p
is rejected with an exception instead, Lwt_main.run p
raises that exception.
Every native and bytecode program that uses Lwt should call this function at its top level. It implements the Lwt main loop.
Example:
let main () = Lwt_io.write_line Lwt_io.stdout "hello world"
let () = Lwt_main.run (main ())
Lwt_main.run
is not available when targeting JavaScript, because the environment (such as Node.js or the browser's script engine) implements the I/O loop.
On Unix, calling Lwt_main.run
installs a SIGCHLD
handler, which is needed for the implementations of Lwt_unix.waitpid
and Lwt_unix.wait4
. As a result, programs that call Lwt_main.run
and also use non-Lwt system calls need to handle those system calls failing with EINTR
.
Nested calls to Lwt_main.run
are not allowed. That is, do not call Lwt_main.run
in a callback triggered by a promise that is resolved by an outer invocation of Lwt_main.run
. If your program makes such a call, Lwt_main.run
will raise Failure
. This should be considered a logic error (i.e., code making such a call is inherently broken).
It is not safe to call Lwt_main.run
in a function registered with Pervasives.at_exit
, use Lwt_main.at_exit
instead.
val yield : unit -> unit Lwt.t
yield ()
is a threads which suspends itself and then resumes as soon as possible and terminates.
module type Hooks = sig ... end
Hook sequences. Each module of this type is a set of hooks, to be run by Lwt at certain points during execution. See modules Enter_iter_hooks
, Leave_iter_hooks
, and Exit_hooks
.
module Enter_iter_hooks : Hooks with type 'return_value kind = 'return_value
Hooks, of type unit -> unit
, that are called before each iteration of the Lwt main loop.
module Leave_iter_hooks : Hooks with type 'return_value kind = 'return_value
Hooks, of type unit -> unit
, that are called after each iteration of the Lwt main loop.
module Exit_hooks : Hooks with type 'return_value kind = 'return_value Lwt.t
Promise-returning hooks, of type unit -> unit Lwt.t
, that are called at process exit. Exceptions raised by these hooks are ignored.
val enter_iter_hooks : (unit -> unit) Lwt_sequence.t
- deprecated
Use module
Enter_iter_hooks
.
val leave_iter_hooks : (unit -> unit) Lwt_sequence.t
- deprecated
Use module
Leave_iter_hooks
.
val exit_hooks : (unit -> unit Lwt.t) Lwt_sequence.t
- deprecated
Use module
Exit_hooks
.
val at_exit : (unit -> unit Lwt.t) -> unit
Lwt_main.at_exit hook
is the same as ignore (Lwt_main.Exit_hooks.add_first hook)
.