;; https://issues.guix.gnu.org/58631 (use-modules (fibers) (fibers channels) (ice-9 rdelim) (statprof)) (run-fibers (lambda () (define channel (make-channel)) (define leave-channel (make-channel)) (spawn-fiber (lambda () (sleep 10) (put-message leave-channel 'leave))) (spawn-fiber (lambda () (let loop () (put-message channel 'hi!) (get-message channel) (loop)))) (spawn-fiber (lambda () (let loop () (get-message channel) (put-message channel 'hey!) (loop)))) (spawn-fiber (lambda () (let loop () (pk 'heap-size (assoc-ref (gc-stats) 'heap-size)) (sleep 2) (loop)))) (get-message leave-channel)) ;; #:drain? #t #:parallelism 1 ;don't create POSIX threads #:hz 0)