Date Added: Oct 2010
Today, multi-core/multi-processor hardware has become ubiquitous, which puts one at a fundamental turning point on software development. However, developing concurrent programs is difficult. Concurrency introduces the possibility of errors that do not exist in sequential programs. The chapter introduces the major concurrent programming models including multithreaded programming on shared memory and message passing programming on distributed memory. Then the authors review the state-of-the-art research achievements on detecting concurrency errors such as deadlock, race condition, and atomicity violation.