Common Design Patterns for Symbian OS: The Foundations of Smartphone Software
by Adrian A. I. Issott
A.1. Run-time Impact of a New Thread
A.1.1. RAM
The RAM impact of a new thread can change depending on the size of the user stack it is given, as well as the size of the heap it is using. Hence it is only possible to give an absolute minimum figure for RAM usage. A thread uses RAM for the following things:
supervisor mode call stack – fixed at 4 KB
user mode call stack – absolute minimum of 4 KB if steps are taken to reduce it from the Symbian OS default of 8 KB; some UI vendors raise the default stack size to 20 KB or more and may prevent it from being reduced below this value
heap – absolute minimum of 4 KB but can be shared between threads if required
objects used by the Kernel to track the thread – approximately 1 KB.
Hence the absolute minimum RAM used by a new thread is 9 KB if the user mode stack is reduced to its minimum and the thread shares the heap of an existing thread. However, the default minimum is at least 17 KB.
A.1.2. Thread Creation
The time taken to create a thread will vary according to how busy the system is, which CPU is present on the device, etc. However to give you some idea of the time needed to create a new thread within an existing process here are some rough figures measured at the time this was written:
OMAP1623/ARM9/ARMv5 UREL – 600 microseconds
OMAP2420/ARM11/ARMv6 UREL – 300 microseconds
A.1.3. Inter-thread Context Switching
The time to switch between two threads in the same process varies according to how busy the system is, which CPU is present ...