perf: fast path for Moonpool_lwt.run_in_lwt_and_await

This commit is contained in:
Simon Cruanes 2025-09-24 14:58:20 -04:00
parent 4e19719c4f
commit 677ae5c36a
No known key found for this signature in database
GPG key ID: EBFFF6F283F3A2B4

View file

@ -295,9 +295,16 @@ let spawn_lwt f : _ Lwt.t =
lwt_fut lwt_fut
let spawn_lwt_ignore f = ignore (spawn_lwt f : unit Lwt.t) let spawn_lwt_ignore f = ignore (spawn_lwt f : unit Lwt.t)
let run_in_lwt_and_await (f : unit -> 'a) : 'a = await_lwt @@ spawn_lwt f
let on_lwt_thread = Main_state.on_lwt_thread let on_lwt_thread = Main_state.on_lwt_thread
let run_in_lwt_and_await (f : unit -> 'a) : 'a =
let st = Main_state.get_st () in
if Scheduler_state.on_lwt_thread_ st then
(* run immediately *)
f ()
else
await_lwt @@ spawn_lwt f
let lwt_main (f : _ -> 'a) : 'a = let lwt_main (f : _ -> 'a) : 'a =
let st = setup () in let st = setup () in
(* make sure to cleanup *) (* make sure to cleanup *)