Dinghy index concept papers
Tannenbaum thread
.
cturner, 20190608,
This is a cold email to you. It regards a matter I spend a lot of time
thinking about. If any wisdom comes to you in reading it, please set
me straight.
:: Summary
It is silly that operating systems present a synchronous interface by
default, with async being a special case.
Rather, it would be sensible for general-purpose operating systems to
present a purely asynchronous system call interface.
:: Unix is synchronous by default
Modern BSD distributions support Kevent, which offers asynchronous
support for a number of concepts.
Still, calls such as stat, open and close remain synchronous.
The behaviour of this blocking is inconsistent. Closing a socket is
fast. Closing a handle to a local disk is slower. Closing a handle to
NFS may block for a significant time.
:: Threads
Current culture encourages the use of multithreading to overcome
blocking problems.
I a not fond of this response. It steers hardware and software towards
a complex settlement that is difficult to reason about.
Multithreading is essentially a workaround for systems which (1) have
been designed as synchronous but (2) where programmers want them to be
asynchronous.
ast, same date,
Parallel programming and interrupts are REALLY REALLY hard to get right.
There are all kinds of race conditions you have to worry about.
Synchronous is much safer. Sometimes there is no way around using an
asynchronous interface, but it is always the last resort. Making it hard
to do is a good idea.
(Presented here with thanks)