Skip to content

Commit f79755a

Browse files
committed
Simplify sample mutex implementation
1 parent e96159e commit f79755a

File tree

1 file changed

+4
-8
lines changed

1 file changed

+4
-8
lines changed

lib/picos_std.awaitable/picos_std_awaitable.mli

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -125,17 +125,13 @@ end
125125
126126
let create ?padded () = Awaitable.make ?padded 0
127127
128-
let rec lock t old =
129-
if old <> 0 then begin
130-
Awaitable.await t 2;
131-
lock t (Awaitable.exchange t 2)
132-
end
133-
134128
let lock t =
135129
if not (Awaitable.compare_and_set t 0 1) then
136-
lock t (Awaitable.exchange t 2)
130+
while Awaitable.exchange t 2 <> 0 do
131+
Awaitable.await t 2
132+
done
137133
138-
let unlock ?checked:_ t =
134+
let unlock t =
139135
let before = Awaitable.fetch_and_add t (-1) in
140136
if before = 2 then begin
141137
Awaitable.set t 0;

0 commit comments

Comments
 (0)