aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/lux/control/concurrency/semaphore.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/lux/control/concurrency/semaphore.lux')
-rw-r--r--stdlib/source/lux/control/concurrency/semaphore.lux6
1 files changed, 3 insertions, 3 deletions
diff --git a/stdlib/source/lux/control/concurrency/semaphore.lux b/stdlib/source/lux/control/concurrency/semaphore.lux
index 83e5ad005..36ac7cd34 100644
--- a/stdlib/source/lux/control/concurrency/semaphore.lux
+++ b/stdlib/source/lux/control/concurrency/semaphore.lux
@@ -75,7 +75,7 @@
(let [semaphore (:representation semaphore)]
(promise.future
(loop [_ []]
- (do {@ io.monad}
+ (do {! io.monad}
[state (atom.read semaphore)
#let [[?sink state' maxed-out?] (: [(Maybe (Resolver Any)) State Bit]
(case (queue.peek (get@ #waiting-list state))
@@ -97,11 +97,11 @@
false]))]]
(if maxed-out?
(wrap (exception.throw ..semaphore-is-maxed-out [(get@ #max-positions state)]))
- (do @
+ (do !
[#let [open-positions (get@ #open-positions state')]
success? (atom.compare-and-swap state state' semaphore)]
(if success?
- (do @
+ (do !
[_ (case ?sink
#.None
(wrap true)