ایک atomic operation ناقابلِ تقسیم طور پر مکمل ہوتی ہے — کوئی دوسری thread ادھوری حالت نہیں دیکھتی؛ memory visibility یہ ہے کہ آیا ایک thread کی writes دوسری کو نظر آتی ہیں؛ memory barriers ترتیب نافذ کرتی ہیں تاکہ وہ writes نظر آنے لگیں۔ Locks واحد فکر نہیں ہیں — memory model بھی ہے۔
Atomicity
ایک atomic op (مثلاً fetch_add، compare-and-swap) ایک ناقابلِ تقسیم قدم کے طور پر execute ہوتی ہے، اس لیے کوئی race اسے تقسیم نہیں کرتی۔ Hardware اور language بغیر مکمل lock کے counters اور flags کے لیے atomics فراہم کرتے ہیں۔
();
counter.incrementAndGet();
