;;;; A simple example of using a condition variable to simulate thread-join (import (scheme base) (scheme read) (scheme write) (srfi 18)) ;(define cv (make-condition-variable)) ;(define m (make-mutex)) ;; Thread - Do something, then let main thread know when we are done (define t (make-thread (lambda () (display "started thread") (newline) (thread-sleep! 3) (display "thread done") (newline) ;(thread-terminate!) ))) (define t2 (make-thread (lambda () (display "started thread2") (newline) (thread-sleep! 4) (display "thread2 done") (newline) ;(thread-terminate!) ))) (thread-start! t) (thread-start! t2) (write (thread? t)) (write (thread? t2)) (newline) ;; Main thread - wait for thread to broadcast it is done (thread-join! t) (thread-join! t2) (display "main thread done") (newline)