mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-18 21:29:18 +02:00
28 lines
664 B
Scheme
28 lines
664 B
Scheme
(import (scheme base)
|
|
(scheme eval)
|
|
(scheme write)
|
|
(scheme cyclone transforms)
|
|
(srfi 18))
|
|
|
|
(let loop ((i 0))
|
|
(expand
|
|
'((define (consumer)
|
|
(let loop ((x 1))
|
|
;(write (list (null? *queue*) *queue*))
|
|
(define sleep? #f)
|
|
(mutex-lock! *lock*)
|
|
(cond
|
|
((not (null? *queue*))
|
|
(write (car *queue*))
|
|
(set! *queue* (cdr *queue*)))
|
|
(else
|
|
(write "consumer sleeping")
|
|
(set! sleep? #t)))
|
|
(mutex-unlock! *lock*)
|
|
(if sleep? (thread-sleep! 1))
|
|
(loop))))
|
|
'())
|
|
|
|
(write `(,i))
|
|
(thread-sleep! 0.005)
|
|
(loop (+ i 1)))
|