File tree Expand file tree Collapse file tree 3 files changed +5
-10
lines changed Expand file tree Collapse file tree 3 files changed +5
-10
lines changed Original file line number Diff line number Diff line change @@ -40,11 +40,7 @@ let rec cleanup backoff trigger (t : t) =
40
40
41
41
let rec wait (t : t ) mutex trigger fiber backoff =
42
42
let before = Atomic. get t in
43
- let after =
44
- match before with
45
- | T Zero -> Q. singleton trigger
46
- | T (One _ as q ) -> Q. snoc q trigger
47
- in
43
+ let after = Q. add before trigger in
48
44
if Atomic. compare_and_set t before after then begin
49
45
Mutex. unlock_as (Fiber.Maybe. of_fiber fiber) mutex Backoff. default;
50
46
let result = Trigger. await trigger in
Original file line number Diff line number Diff line change @@ -73,11 +73,7 @@ let rec lock_as fiber t entry backoff =
73
73
Entry { trigger; fiber }
74
74
| Entry _ as entry -> entry
75
75
in
76
- let waiters =
77
- match r.waiters with
78
- | T Zero -> Q. singleton entry
79
- | T (One _ as q ) -> Q. snoc q entry
80
- in
76
+ let waiters = Q. add r.waiters entry in
81
77
let after = Locked { fiber = r.fiber; waiters } in
82
78
if Atomic. compare_and_set t before after then begin
83
79
match Trigger. await entry_r.trigger with
Original file line number Diff line number Diff line change @@ -34,6 +34,9 @@ let[@inline] snoc (One o as t : (_, _) one) value =
34
34
let cons = Cons { value; next = S Nil } in
35
35
T (One { head = o.head; tail = o.cons; cons })
36
36
37
+ let [@ inline] add t value =
38
+ match t with T Zero -> singleton value | T (One _ as o ) -> snoc o value
39
+
37
40
let [@ inline] head (One { head = Cons hd; _ } : (_, _ ) one) = hd.value
38
41
39
42
let [@ inline] tail (One o as t : (_, _ ) one) =
You can’t perform that action at this time.
0 commit comments