cyclone/libs/test-threads.scm
Justin Ethier d1dbd7fae9 Issue #320 - Track threads that have not yet run
This allows (thread-join!) to be able to wait on these new threads
2019-06-10 13:16:39 -04:00

42 lines
915 B
Scheme

;;;; 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)