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)