summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2025-05-04 20:54:15 +0200
committerAndy Wingo <wingo@pobox.com>2025-05-04 20:54:15 +0200
commit4c76332570cb7658971042af12a9171f1d1c3780 (patch)
tree069b63ba188c02f9781772f6eff4e696d8d89ffb
parent8b46c321e5beb483a83674af809da3bce1321984 (diff)
downloadguile-4c76332570cb7658971042af12a9171f1d1c3780.tar.gz
guardians: speed up atomic fifo
* module/ice-9/guardians.scm (make-atomic-fifo): Instead of transferring the last element to the outbox, just return it.
-rw-r--r--module/ice-9/guardians.scm4
1 files changed, 2 insertions, 2 deletions
diff --git a/module/ice-9/guardians.scm b/module/ice-9/guardians.scm
index f5c181748..ef050475b 100644
--- a/module/ice-9/guardians.scm
+++ b/module/ice-9/guardians.scm
@@ -65,6 +65,7 @@
(define (transfer! in out)
(match in
(() (values))
+ ((x) x)
((x . in*)
(let* ((out* (cons x out))
(out** (atomic-box-compare-and-swap! outbox out out*)))
@@ -83,8 +84,7 @@
(match (atomic-box-swap! inbox '())
(() #f)
(in
- (transfer! in '())
- (pop!)))))))
+ (transfer! in '())))))))
(values push! pop!))
(define (make-guardian)