Chapter 5. Cooperative Multitasking

Multitasking is where multiple tasks share common resources such as a CPU or data. In the case of a device with a single CPU,[] only one task is said to be running at any point in time, meaning that the CPU is actively executing instructions for that task. Multitasking involves scheduling which task is to be the one running at any given time whilst all other tasks wait to be given a turn. By switching between tasks frequently enough, the illusion of parallelism is achieved. One thing to remember here is that multitasking is a more general concept than multithreading since whilst individual tasks can be assigned to run in a single thread this is not always necessary.

[] At the time of writing, all Symbian OS applications run on a single CPU but this is set to change in future with SMP (www.symbian.com/symbianos/smp). However, multitasking will still occur on each individual CPU.

As discussed in Chapter 4, Symbian OS makes extensive use of event-driven programming to conserve power whilst promoting the decoupling of components. This naturally leads to multitasking as any moderately complex software will need to deal with incoming event signals from multiple sources. Early GUI systems took a step backwards from the big systems of the previous era by implementing their event-driven programming models using non-pre-emptive process scheduling (cooperative multitasking as it became known). This was in contrast to the UNIX and mainframe approach of pre-emptive ...

Get Common Design Patterns for Symbian OS: The Foundations of Smartphone Software now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.