Webinar | Ensuring Code Quality in Multi-threaded Applications
Theresa Lanowitz | March 26, 2008
Multi-threading can improve the performance of applications exponentially but it also can create new challenges for software development teams. Applications that utilize multi-threading introduce an entirely new class of hard-to-find software failures known as concurrency defects. To date, testing for concurrency defects such as Race Conditions and Deadlocks has been extremely difficult due to the complexity inherent in multi-threaded run-time environments.

In this web seminar Theresa Lanowitz, founder and CEO of voke, and Ben Chelf, CTO of Coverity will recommend effective strategies for ensuring superior code quality in multi-threaded applications. Theresa will discuss the increasing trend toward multi-core environments and the critical need for implementing effective tools and processes early in the development lifecycle. Ben will describe how recent breakthroughs in the use of code analysis are enabling developers to identify and eliminate dangerous concurrency defects early in the development lifecycle. In addition, he will provide specific examples of some of the most dangerous concurrency defect types and provide tips on how to avoid them, including:

  • Race Conditions - Multiple threads access the same shared data without the appropriate locks to protect access points. When this defect occurs, one thread may inadvertently overwrite data used by another thread, leading to both loss of information and data corruption.
  • Deadlocks - Two or more threads waiting for a lock in a circular chain such that the locks can never be acquired. When this defect occurs, the entire software system may halt, as none of the threads can proceed or error out along their execution paths.
  • Thread Blocks - A thread calls a long-running operation while holding a lock thereby preventing the progress of other threads. When this defect occurs, application performance can drop dramatically due to a single bottleneck for all threads.