On Mon, Jun 01, 2020 at 01:32:56PM +1000, Dave Horsfall
wrote:
On Mon, 1 Jun 2020, Rob Pike wrote:
I???m not quite sure why the Research lineage did
not include
non-blocking behaviour, especially in view of the man page comments.
Maybe it was seen as against the Unix philosophy, with select()
offering sufficient mechanism to avoid blocking (with open() the hard
corner case)?
That's it. Select was good enough for our purposes.
After being dragged through both Berserkley and SysVile, I never did get the
hang of poll()/select() etc,,,
I'm sure you could, select is super handy, think a network server like
apache.
My view may be unpopular but I've always been disappointed that Unix
implemented blocking I/O only and then had to add various hacks to cover
up for the lack of asynchonous I/O. It's trivial to build blocking I/O
operations on top of asynchonous I/O operations. It's impossible to do
the opposite without additional functionality.
I also found it disappointing that poll()/select() only worked on TTY and
network operations. HDDs are really slow compared to CPUs and it would be
really nice if a process could go and do something else whilst waiting for
a file to open.
--
Peter Jeremy