Chapter 3. Resource Lifetimes

This chapter contains a collection of patterns about when and how to allocate resources, but before we go any further we need to understand what we mean by a resource. For our purposes, a resource is defined as any physical or virtual entity of limited availability that needs to be shared across the system. This can be broken down into two further types:

  • Ephemeral resources, such as CPU cycles or battery power, have one key trait: you can't hold on to them or reserve them for your own purposes. They're there but you can't keep a grip on them whether you use them or not.

  • Ownable resources, such as RAM, disk space and communication channels, are resources that you can hold onto and keep using. Such resources must normally be reserved for your sole use. During the period that they are allocated to you, these resources cannot be shared or borrowed by anyone else until you de-allocate them.

In this chapter, we'll be focusing on ownable resources and how to balance the non-functional characteristics of sharing them across asystem.

Whatever their type, the resources available to software on a mobile device, are much more constrained than on your average laptop or desktop PC. Compared to mainstream laptops, mobile devices are between 10 and 30 times smaller in terms of CPU speed, RAM size and storage space and are set to remain so in relative terms even as they increase in absolute terms. This is partly to do with the fact that mobile devices are expected ...

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.