Over the last few years, third-party code has moved from a minor factor in software development to a dominant force in the industry. It is now used throughout software development in all applications, from highly sensitive government and military applications to security-intensive consumer commerce and communications.
Multithreading adds entirely new classes of potential bugs to those that must be considered by developers. At the same time, the nondeterminism and sheer number of possibilities introduced by thread interleaving make it significantly more difficult to find bugs in multithreaded systems by testing and other traditional methods.
The industry has placed a big bet on future single-chip performance gains coming from increasing core counts, but this will only be a winning wager if software can be programmed to take advantage of parallel processors. Unfortunately, concurrent programming is difficult. However, common concurrency pitfalls can be avoided through static analysis with GrammaTech CodeSonar, which can help find such defects without executing the program.