From 51459f9b0bfb5a7625f7e4eaf90ea10118625b31 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Mon, 4 Mar 2024 15:18:18 -0500 Subject: [PATCH] feat: add `Runner.dummy` --- src/core/runner.ml | 9 +++++++++ src/core/runner.mli | 4 ++++ src/fib/fiber.ml | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/core/runner.ml b/src/core/runner.ml index cf4deb9a..0fda1be3 100644 --- a/src/core/runner.ml +++ b/src/core/runner.ml @@ -43,5 +43,14 @@ module For_runner_implementors = struct let k_cur_runner : t option ref TLS.key = Types_.k_cur_runner end +let dummy : t = + For_runner_implementors.create + ~size:(fun () -> 0) + ~num_tasks:(fun () -> 0) + ~shutdown:(fun ~wait:_ () -> ()) + ~run_async:(fun ~ls:_ _ -> + failwith "Runner.dummy: cannot actually run tasks") + () + let get_current_runner = get_current_runner let get_current_storage = get_current_storage diff --git a/src/core/runner.mli b/src/core/runner.mli index 4b43bb1c..f4586687 100644 --- a/src/core/runner.mli +++ b/src/core/runner.mli @@ -51,6 +51,10 @@ val run_wait_block : ?ls:Task_local_storage.t -> t -> (unit -> 'a) -> 'a about the required discipline to avoid deadlocks). @raise Shutdown if the runner was already shut down *) +val dummy : t +(** Runner that fails when scheduling tasks on it. + Calling {!run_async} on it will raise Failure. *) + (** {2 Implementing runners} *) (** This module is specifically intended for users who implement their diff --git a/src/fib/fiber.ml b/src/fib/fiber.ml index cc666b24..55410d43 100644 --- a/src/fib/fiber.ml +++ b/src/fib/fiber.ml @@ -65,7 +65,7 @@ let create_done_ ~res () : _ t = @@ Alive { children = FM.empty; on_cancel = Int_map.empty; cancel_id = 0 }; id; res; - runner = Immediate_runner.runner; + runner = Runner.dummy; ls = Task_local_storage.dummy; }