> But it was 'cooperative' multitasking, just like 16 bit Windows.
Wrong. MacOS had full preemptive multi tasking from System 7 onwards. From 1991. I used the Process Manager API for a shipping product in 1993. Had full VM too.
This is the System 7.5 era docs.
It was just that almost all applications took the easy way out and used the WaitNextEvent() model rather than creating a full multi-threaded application architecture. All the API was there to do it.
The problem back then was retrofitting protected memory at the system level to badly behaved existing applications without breaking them. MS, as usual, was the worst offender. Easily solved, using the MMU pager, but Apple management was in total disarray at the time so nothing was ever shipped.
As for MacOSX. All you need to known about what a total mess NextStep 5.x really is that it has five different Process/Task Manager API's. Three of which funnel down to pThreads. Even WinNT kernel, which is its own kind of mess, only has two. Well two and a half.
MacOS 7.x is still the best desktop OS I have ever developed for. And MacOS X is easily the worst. Even worse than Win3.0. So now all cross platform desktop OS dev work is in QT. Not so much to insulate myself from Win32. But to avoid the mind numbing stupidity of MacOSX and its NS swamp. Amateur hour at its finest.