mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-03 18:50:19 +02:00
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.
This commit is contained in:
parent
8b46c321e5
commit
4c76332570
1 changed files with 2 additions and 2 deletions
|
@ -65,6 +65,7 @@
|
||||||
(define (transfer! in out)
|
(define (transfer! in out)
|
||||||
(match in
|
(match in
|
||||||
(() (values))
|
(() (values))
|
||||||
|
((x) x)
|
||||||
((x . in*)
|
((x . in*)
|
||||||
(let* ((out* (cons x out))
|
(let* ((out* (cons x out))
|
||||||
(out** (atomic-box-compare-and-swap! outbox out out*)))
|
(out** (atomic-box-compare-and-swap! outbox out out*)))
|
||||||
|
@ -83,8 +84,7 @@
|
||||||
(match (atomic-box-swap! inbox '())
|
(match (atomic-box-swap! inbox '())
|
||||||
(() #f)
|
(() #f)
|
||||||
(in
|
(in
|
||||||
(transfer! in '())
|
(transfer! in '())))))))
|
||||||
(pop!)))))))
|
|
||||||
(values push! pop!))
|
(values push! pop!))
|
||||||
|
|
||||||
(define (make-guardian)
|
(define (make-guardian)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue