Symbian wasn't actually limited to cooperative multitasking. The kernel certainly supported preemptive multitasking, and apps could use multithreading if they wanted to. The POSIX threads API was available too.
However since everything in Symbian was designed first and foremost to minimize power use and memory requirements, the framework actively recommended against use of threads. Instead they asked you to schedule things on the app's main thread which gave the framework more control over when to run your callbacks. This wasn't a terrible idea at all, but the implementation of this system as a C++ multiple inheritance contraption was pretty confusing as I recall.
Re:Symbian Source Code
by secondcoming on Tuesday May 24, 2022 @02:53PM
(#31496083)
CActiveScheduler ran your CActive::RunL(), IIRC
Of course, both are simultaneously true.
As you say, this phone was definitely ahead of its time as an open computing platform.
I had no idea that it even had an FM transmitter and support for composite video as well as HDMI. Thank you for sharing that.