Multi-threaded programs are becoming more common in order to exploit the additional processing power provided by modern computer systems. Unfortunately, parallel programming is difficult to get right. Program execution becomes non-deterministic and new types of faults arise. A substantial source of errors are data races, where the program state may become undefined due to concurrent accesses to shared memory locations. Data races are difficult to find, because the observed faulty behavior is often not directly related to the program location causing the fault. The author presents improvements...
Multi-threaded programs are becoming more common in order to exploit the additional processing power provided by modern computer systems. Unfortunatel...