File tree Expand file tree Collapse file tree 1 file changed +15
-11
lines changed Expand file tree Collapse file tree 1 file changed +15
-11
lines changed Original file line number Diff line number Diff line change 11open Picos
22open Picos_std_awaitable
33
4- type t = unit Awaitable .t
4+ type t = int Awaitable .t
55
6- let create ?padded () = Awaitable. make ?padded ()
6+ let create ?padded () = Awaitable. make ?padded 0
77
88let [@ inline] wait t lock ~acquire ~release =
9- let trigger = Trigger. create () in
10- let awaiter = Awaitable.Awaiter. add t trigger in
9+ let before = Awaitable. get t in
1110 release lock;
1211 let lock_forbidden lock =
1312 let fiber = Fiber. current () in
@@ -20,12 +19,17 @@ let[@inline] wait t lock ~acquire ~release =
2019 Fiber. set fiber ~forbid ;
2120 Printexc. raise_with_backtrace exn bt
2221 in
23- match Trigger. await trigger with
24- | None -> lock_forbidden lock
25- | Some exn_bt ->
26- Awaitable.Awaiter. remove awaiter;
22+ match if Awaitable. get t == before then Awaitable. await t before with
23+ | () -> lock_forbidden lock
24+ | exception exn ->
25+ let bt = Printexc. get_raw_backtrace () in
2726 lock_forbidden lock;
28- Printexc. raise_with_backtrace (fst exn_bt) (snd exn_bt)
27+ Printexc. raise_with_backtrace exn bt
2928
30- let signal = Awaitable. signal
31- let broadcast = Awaitable. broadcast
29+ let signal t =
30+ Awaitable. incr t;
31+ Awaitable. signal t
32+
33+ let broadcast t =
34+ Awaitable. incr t;
35+ Awaitable. broadcast t
You can’t perform that action at this time.
0 commit comments