[gambit-list] I/O Question

Marc Feeley feeley at iro.umontreal.ca
Thu May 1 18:35:19 EDT 2008


On 1-May-08, at 5:50 PM, Francisco wrote:

> (define (with-string-stop str c)
>  (let
>      ((port (open-string str)))
>    (read-string-until-char port c)))

"open-string" creates an input-output-port, that is a port you can  
write to and read from.  Whatever you write to it becomes readable (in  
other words it is a FIFO).  So the system cannot tell when the stream  
is at "end-of-file" because in principle some thread might have a  
reference to the port and at some point in the future add something to  
the FIFO.  However, the scheduler sees that no other thread is  
runnable when the read-char is called on an empty FIFO, so it declares  
that there is a deadlock (no further progress is possible).

So change the open-string by open-input-string (which creates an input- 
(only)-port) and the end-of-file will be read by read-char as you  
expect it.

Marc




More information about the Gambit-list mailing list