Programming Concepts
Advanced
What is Race Condition?
A bug that occurs when the behavior of software depends on the timing or order of uncontrolled events like thread scheduling.
Race conditions happen when multiple threads, processes, or requests access shared resources concurrently and the outcome depends on execution order. Classic examples include two threads incrementing a counter (lost updates), checking-then-acting on a file (TOCTOU), and double-spending in financial systems. Prevention techniques include mutexes/locks (serialize access), atomic operations, database transactions with proper isolation levels, optimistic locking (version numbers), and lock-free data structures. In web applications, race conditions can cause duplicate charges, inventory overselling, and data corruption. They are notoriously difficult to reproduce and debug because they depend on timing.