multithreading - Check if data available on input-port -
i have tcp-connection between server , client , i'm looking way poll input-port on server side. if there data available, should read , put list. tried putting inside thread, blocks until can read something, , not want. want thread run "in background". wondering if possible in racket.
i have following code:
(define in '()) (define out '()) (define data '()) (define listener (tcp-listen 8085)) (define (discover) (define (loop) (if (tcp-accept-ready? listener) (begin (let-values (((pi po) (tcp-accept listener))) (set! in pi) (set! out po) (thread (read-thread pi))) (loop)) 'done)) (loop)) (define (read-thread port) (let ((d (read port))) (set! data (cons d data))) (sleep 2) (read-thread port))
the thread
procedure takes thunk run in new thread. code doing reading before second thread ever created (and should giving error thread
expecting procedure`). want instead:
(thread (lambda () (read-thread pi)))
Comments
Post a Comment