> My understanding was that classic was built on the assumption that events come in from the keyboard and mouse and once you added more events from the network it exposed race conditions. It probably didn't help that we were on "Internet 2" had were early to get 100 Mbps ethernet. If you were using dialup it was probably not so bad.
They added preemptive multitasking around System 7.5, but anything that used the Toolbox still had to run in the main thread and be cooperatively multitasked so it wasn't much of an improvement (hence the lockups).
For that matter when they added SMP support to Linux they put most of the kernel behind a giant lock so, effectively, applications could run multiple processors even though the OS could only handle one. I guess you could have done the same thing with a single-process OS.
The list of classic Mac OS programs which actually spawned preemptive threads was probably in the single digits. Very few of the machines were multi-core, so it didn't matter much.
I'm not sure exactly how many programs used them, but support was fairly widespread in a lot of popular programs because it was the only way for Classic Mac OS to make use of the second processor in multiprocessor machines. Some examples of software that used preemptive threads are Photoshop, Final Cut Pro, After Effects, Premiere, Lightwave, and Cinema 4D (see https://www.macworld.com/article/159778/mp_mac.html ).