> It is pretty arrogant to criticize almost all software architectures on earth.
Almost all software is programmed with modern languages, which all (imo) have extremely lackluster support for concurrency. It's not a symptom of the programmers, but the tools they work with. Who uses Ada these days?
Locks should only be used when other protection mechanisms are too slow.
Semantically, the critical region protected by a lock is not connected to the lock in any way. This can make debugging races super difficult, and you have to rely on everyone to lock everything at the right point.
Juggling multiple locks in complex concurrent processes is difficult, and prone to bugs.
I struggle to think of where a lock is required, barring the extremely hyperoptimised hot paths within operating systems, or similar applications.
Almost all software is programmed with modern languages, which all (imo) have extremely lackluster support for concurrency. It's not a symptom of the programmers, but the tools they work with. Who uses Ada these days?
Locks should only be used when other protection mechanisms are too slow.
Semantically, the critical region protected by a lock is not connected to the lock in any way. This can make debugging races super difficult, and you have to rely on everyone to lock everything at the right point.
Juggling multiple locks in complex concurrent processes is difficult, and prone to bugs.
I struggle to think of where a lock is required, barring the extremely hyperoptimised hot paths within operating systems, or similar applications.