Hi Konrad,

> train. The task and *Run mechanism (if used with enough care) give us
> non blocking reads.
> But the underlying select function also provides non blocking writes.
> so that you can dely trying to write to a socket until it is ready for
> more data.

I would say that select (in C) and task and *Run (in picolisp) do not
have anything to do with blocking i/o.  It has to do something with
the concept of asynchronous.  In other words, when the process does
not have anything to do, it goes to sleep by calling select and when
there is some event on the registered file descriptors (e.g. read or
write is possible), the process is woken up.

Whether i/o is blocking or not is a property of the file/socket and
i/o functions.  So what gives you non-blocking reads and writes is
setting the file to non-blocking mode and then handling "partial" i/o
data in a specific way.



Reply via email to