जब धेरै thread ले data साझा गर्छन्, तिनका operation हरू बहु-चरणीय update को बीचमा interleave हुन सक्छन्, जसले एउटा race condition उत्पन्न गर्छ — एउटा bug जहाँ परिणाम अनिश्चित timing मा निर्भर हुन्छ। Synchronization भनेको सुरक्षित क्रम बाध्य पार्ने उपकरणहरूको समूह हो।
समस्या: एउटा race condition
count++ atomic जस्तो देखिन्छ तर वास्तवमा read-modify-write हो:
