diff options
author | Andy Wingo <wingo@pobox.com> | 2025-05-04 20:54:15 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2025-05-04 20:54:15 +0200 |
commit | 4c76332570cb7658971042af12a9171f1d1c3780 (patch) | |
tree | 069b63ba188c02f9781772f6eff4e696d8d89ffb | |
parent | 8b46c321e5beb483a83674af809da3bce1321984 (diff) | |
download | guile-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.scm | 4 |
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) |