Welcome to the CHICKEN Scheme pasting service
tender threading pasted by mario-goulart on Tue Oct 23 20:00:04 2012
(use srfi-18) (use posix) (define (produce writer) (thread-start! (lambda () (let loop ((i 0)) (display (conc "hello " i "\n") writer) (flush-output writer) (thread-sleep! 1) (loop (+ i 1)))))) (define (consume reader) (thread-start! (lambda () (let loop () (print (read-line reader)) (thread-sleep! 1) (loop))))) (define (stream-test in-fd out-fd) (let ((reader (open-input-file* in-fd)) (writer (open-output-file* out-fd))) (produce writer) (print "producer started") (thread-join! (consume reader)))) (define dothis (call-with-values create-pipe stream-test)) (dothis)
Using read instead of read-line added by mario-goulart on Tue Oct 23 20:18:38 2012
(use srfi-18) (use posix) (define (produce writer) (thread-start! (lambda () (let loop ((i 0)) (display (conc "hello" i " ") writer) (flush-output writer) (loop (+ i 1)))))) (define (consume reader) (thread-start! (lambda () (let loop () (print (read reader)) (loop))))) (define (stream-test in-fd out-fd) (let ((reader (open-input-file* in-fd)) (writer (open-output-file* out-fd))) (produce writer) (print "producer started") (thread-join! (consume reader)))) (define dothis (call-with-values create-pipe stream-test)) (dothis)