Non-Atomic Counter Increment Race Condition

Detects concurrent counter increments and decrements without atomic operations or mutex protection.

zakirkun Updated

File contents

Non-Atomic Counter Race Condition

Overview

Incrementing/decrementing shared counters (count++, balance += amount) without atomic operations creates race conditions where concurrent updates lose some increments, leading to incorrect values. This affects rate limiters, inventory counters, and financial balances.

Remediation

  • Go: Use sync/atomic package (atomic.AddInt64())
  • Java: Use AtomicInteger/AtomicLong
  • JavaScript: Use a single event loop (Node.js) or worker locks
  • C/C++: Use std::atomic<int> or _Atomic int

zakirkun/ice-tea/tree/main/skills/race-condition/concurrent-counter commit 6c42d36dc9

Frequently asked questions

npx skillmds@latest add zakirkun/non-atomic-counter-increment-race-condition