Concurrency is the notion of multiple things happening at the same time. With the proliferation of multicore CPUs and the realization that the number of cores in each processor will only increase, software developers need new ways to take advantage of them. Although operating systems like Mac OS X and iPhone OS are capable of running multiple programs in parallel, most of those programs run in the background and perform tasks that require little continuous processor time. It is the current foreground application that both captures the user’s attention and keeps the computer busy. If an application has a lot of work to do but keeps only a fraction of the available cores occupied, those extra processing resources are wasted.
This document describes the technique and technologies you should be using to implement concurrency in your applications. Some of the technologies described in this document are available in both Mac OS X and iPhone OS but some are platform specific. Where there are differences, this document calls them out as such and indicates which platforms are supported.