I don't think that's true, if that were the case it would be constantly 
printing to stdout.
It's a fifo file created with mkfifo, as soon as data is read from it the data 
is no longer in the file. Fifos are automatically closed after one process(e.g. 
echo) writes to it, so I have to reopen it so I can echo to it multiple times.

But I think I worked out the problem thanks to your comment, I think it's 
because with-file-reader blocks without yielding.

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Sunday, September 15, 2019 3:10 AM, Alexander Ilin <ajs...@yandex.ru> wrote:

> You open a file, read one line, then reopen the file and do the same again.
> Since you are reopening the stream, there's always data available, thus there 
> is no reason to yield.
>
> 14.09.2019, 21:04, "murray.calavera--- via Factor-talk" 
> <factor-talk@lists.sourceforge.net>:
>
>> Hello all,
>>
>> I'm a bit confused about how threads work with IO in factor.
>>
>> This: https://docs.factorcode.org/content/article-threads.html seems to 
>> imply that functions such as readln will yield  to other threads unless data 
>> is available on a stream, but the following program only ever reads from the 
>> fifo:
>>
>> USING: kernel threads io io.files io.encodings.utf8 ;
>> IN: test
>>
>> : read-fifo ( -- )
>>     "fifo" utf8 [ readln print flush ] with-file-reader read-fifo ;
>>
>> : read-stdin ( -- )
>>     readln print flush read-stdin ;
>>
>> [ read-fifo ] "fifo-thread" spawn drop
>> read-stdin
>>
>>
>>
>> What am I misunderstanding here?
>>
>> Thanks.
>>
>> Murray.
>>
>> ,,
>>
>> _______________________________________________
>> Factor-talk mailing list
>> Factor-talk@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/factor-talk
>
> ---=====---
> Александр
_______________________________________________
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk

Reply via email to