Le 17/07/2015 16:16, Matthias Felleisen a écrit :
This actually works. But I am not sure why you'd want to do something like that.

Ah yes, letrec is what I was looking for :) . The goal was to test a port with a specific timeout (here I set it to two for dev purposes, but 10 is better). I rewrited foo with better comments below.

Just to be sure, I cant have the prompt return without using a (thread-wait thd) function ?

1) The port is not good so b kills a, then b ends. The program continue.
2) But if I set (thread-wait a), b kills a, then b ends. As a was killed, it is considered as terminated so it is the same as 1) ?



#lang racket

(define (foo)
  (letrec ([a (thread (λ ()
(let-values ([(p-in p-out) (tcp-connect "smtp.gmail.com" 5887)])
                          (printf "Server port is good")
                          (kill-thread b))))]
           [b (thread (λ ()
                        (displayln `(hello world))
                        (sleep 2)
                        (printf "Server port is not good")
                        (kill-thread a)))])
    (thread-wait b)))


--
You received this message because you are subscribed to the Google Groups "Racket 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to