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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to