#lang racket/base (define (load-in-background description module) (printf "Starting ~s...\n" description) (thread (lambda () (dynamic-require module #f)))) (define (wait-for-completion threads) (when (pair? threads) (apply sync (map (lambda (t) (handle-evt (thread-dead-evt t) (lambda (dummy) (wait-for-completion (remove t threads))))) threads)))) (wait-for-completion (list (load-in-background "DNS server" "../racket-dns/driver.rkt") (load-in-background "SSH server" "repl-server.rkt")))