index concept yachts_and_racing_dinghies system_niches elements_principles designs journal



// 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)