package eio
Effect-based direct-style IO API for OCaml
Install
Dune Dependency
Authors
Maintainers
Sources
eio-1.0.tbz
sha256=da260d9da38b3dde9f316652a20b13a261cf90b85a2498ac669b7d564e61942d
sha512=5886e1159f48ede237769baa1d8b5daafa0310e4192d7fe0e8c32aef70f2b6378cef72d0fbae308457e25d87a69802b9ee83a5e8f23e0591d83086a92d701c46
doc/src/eio.core/single_waiter.ml.html
Source file single_waiter.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
(* Allows a single fiber to wait to be notified by another fiber in the same domain. If multiple fibers need to wait at once, or the notification comes from another domain, this can't be used. *) type 'a t = { mutable wake : ('a, exn) result -> unit; } let create () = { wake = ignore } let wake t v = t.wake v let await t op id = let x = Suspend.enter op @@ fun ctx enqueue -> Cancel.Fiber_context.set_cancel_fn ctx (fun ex -> t.wake <- ignore; enqueue (Error ex) ); t.wake <- (fun x -> Cancel.Fiber_context.clear_cancel_fn ctx; t.wake <- ignore; enqueue x ) in Trace.get id; x let await_protect t op id = let x = Suspend.enter_unchecked op @@ fun _ctx enqueue -> t.wake <- (fun x -> t.wake <- ignore; enqueue x) in Trace.get id; x
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>