From d4476f7f31d39a24b64137b5fa18c5a95960fecf Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Wed, 6 Mar 2024 23:43:52 -0500 Subject: [PATCH] fib: expose `Fiber.Private_.create` --- src/fib/fiber.ml | 30 +++++++++++++++++------------- src/fib/fiber.mli | 1 + 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/fib/fiber.ml b/src/fib/fiber.ml index 4f776c80..e7bc57b7 100644 --- a/src/fib/fiber.ml +++ b/src/fib/fiber.ml @@ -40,23 +40,27 @@ module Private_ = struct match A.get self.state with | Alive _ -> false | Terminating_or_done _ -> true + + let create_ ~ls ~runner () : 'a t = + let id = Handle.generate_fresh () in + let res, _promise = Fut.make () in + { + state = + A.make + @@ Alive + { children = FM.empty; on_cancel = Int_map.empty; cancel_id = 0 }; + id; + res; + runner; + ls; + } + + let create ~runner () : _ t = + create_ ~ls:(Task_local_storage.Direct.create ()) ~runner () end include Private_ -let create_ ~ls ~runner () : 'a t = - let id = Handle.generate_fresh () in - let res, _promise = Fut.make () in - { - state = - A.make - @@ Alive { children = FM.empty; on_cancel = Int_map.empty; cancel_id = 0 }; - id; - res; - runner; - ls; - } - let create_done_ ~res () : _ t = let id = Handle.generate_fresh () in { diff --git a/src/fib/fiber.mli b/src/fib/fiber.mli index 25787cc1..4f2b9057 100644 --- a/src/fib/fiber.mli +++ b/src/fib/fiber.mli @@ -31,6 +31,7 @@ module Private_ : sig type any = Any : _ t -> any [@@unboxed] val get_cur : unit -> any option + val create : runner:Runner.t -> unit -> 'a t end (**/**)