मैं सीखने की कोशिश कर रहा हूं और मल्टीथ्रेडिंग को समझने में बेहतर हूं, लेकिन मैं लेट-एंड-एड जैसे परमाणु कार्यों के व्यवहार पर लटका हुआ हूं। Fetch-and-add के विशिष्ट मामले में, यह मेरी समझ है कि एक मूल्य (मान लीजिए एक्स जो वर्तमान में 5 बराबर है) को वृद्धि मूल्य से जोड़ा जाता है (मान लें 3), परिणामस्वरूप योग (8) x के लिए लिखा गया है स्मृति में जगह, अभी तक पुराना मान (5) वापस आ गया है।फ़ेच-एंड-एड जैसे परमाणु संचालन क्यों परिवर्तनीय के पुराने मान को बदलते हैं?
विभिन्न स्थानों में ऐसे कई अन्य कार्य हैं (जैसे ओपनजीएल के परमाणु कार्यों, जावा के परमाणु संकेतक, और कई अन्य क्षेत्रों) जो इस तरह व्यवहार करते हैं। लेकिन मुझे समझ में नहीं आता है कि क्यों कोड में एक जगह स्मृति को लिखना चाहती है और फिर भी वह मान वापस लौटाती है जिसे वह पहले स्थान पर संशोधित करना चाहता था। क्या कोई इस पर प्रकाश डालने में मदद कर सकता है?
यह पढ़ने के लिए एक अविश्वसनीय रूप से उपयोगी लेख था। मदद और उदाहरण के लिए धन्यवाद, सर्गेई, और डिमिटार! – hashahid