Consumers of software today continually demand more from their applications. In response to these demands, hardware manufacturers have developed new multi-core (or “multi-processor”) devices. In order to fully leverage this new class of hardware, software developers must turn their focus to multi-threaded applications.

Multi-threaded software development brings with it new challenges, however, in the form of software defects such as race conditions and deadlocks—flaws that can quickly derail a software project. To avoid catastrophic failures, software development organizations must identify and eliminate these problems early in the application development lifecycle. This paper reviews common pitfalls that software developers face when creating multi-threaded applications, and discusses emerging software analysis capabilities that will help development organizations capitalize on multi-core hardware.