On Saturday, June 27, 2020, at 03:46 -0500, Chris Angelico wrote:
I grew up with concurrency being a perfectly normal thing. To me, EVERYTHING is concurrent. (Back then, it was single-core CPUs, so technically most machine code instructions could be assumed to be atomic, but at any higher level, you could be preempted at any moment.)
Concurrent and asynchronous. And these funny red hats. Way back when (1989ish?), I ported an [in house, proprietary] OS from the MC68000 to the MC68020 and MC68030 (https://en.wikipedia.org/wiki/Motorola_68000_series), and one of the "breakthroughs" was that individual instructions on a single core CPU were *not* atomic. IIRC, the worst case was that an individual instruction could be interrupted three or four times due to page faults, plus certain I/O or other interrupts. Not to mention that consecutive instructions could overlap in weird ways or be executed out of order. But I digress. I, too, found out later that concurrency was hard, mostly from people who *hadn't* programmed at that bare metal level.