Skip to content

Commit 2f0aa7a

Browse files
committed
refactor moonpool_lwt
1 parent f73ba5a commit 2f0aa7a

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

src/lwt/moonpool_lwt.ml

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,13 @@ module Main_state = struct
175175
Scheduler_state.add_action_from_another_thread_ (get_st ()) f
176176
end
177177

178+
let await_lwt_from_another_thread fut =
179+
let tr = M.Trigger.create () in
180+
Main_state.add_action_from_another_thread (fun () ->
181+
register_trigger_on_lwt_termination fut tr);
182+
M.Trigger.await_exn tr;
183+
await_lwt_terminated fut
184+
178185
let await_lwt (fut : _ Lwt.t) =
179186
if Scheduler_state.on_lwt_thread_ (Main_state.get_st ()) then (
180187
(* can directly access the future *)
@@ -186,13 +193,8 @@ let await_lwt (fut : _ Lwt.t) =
186193
register_trigger_on_lwt_termination fut tr;
187194
M.Trigger.await_exn tr;
188195
await_lwt_terminated fut
189-
) else (
190-
let tr = M.Trigger.create () in
191-
Main_state.add_action_from_another_thread (fun () ->
192-
register_trigger_on_lwt_termination fut tr);
193-
M.Trigger.await_exn tr;
194-
await_lwt_terminated fut
195-
)
196+
) else
197+
await_lwt_from_another_thread fut
196198

197199
let lwt_of_fut (fut : 'a M.Fut.t) : 'a Lwt.t =
198200
if not (Main_state.on_lwt_thread ()) then
@@ -303,7 +305,7 @@ let run_in_lwt_and_await (f : unit -> 'a) : 'a =
303305
(* run immediately *)
304306
f ()
305307
else
306-
await_lwt @@ spawn_lwt f
308+
await_lwt_from_another_thread @@ spawn_lwt f
307309

308310
let lwt_main (f : _ -> 'a) : 'a =
309311
let st = setup () in

0 commit comments

Comments
 (0)