mirror of
https://github.com/c-cube/moonpool.git
synced 2025-12-05 19:00:33 -05:00
perf: fast path for Moonpool_lwt.run_in_lwt_and_await
This commit is contained in:
parent
4e19719c4f
commit
677ae5c36a
1 changed files with 8 additions and 1 deletions
|
|
@ -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 *)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue