जब एकाधिक थ्रेड एक साथ एक साझा वैश्विक चर तक पहुंचते हैं, तो थ्रेड चर से लिख और पढ़ सकते हैं अलग-अलग प्रोसेसर कोर में अलग-अलग प्रतियां कैश की गईं। विभिन्न कैश में संग्रहीत मानों के बीच संभावित विसंगति के कारण एक थ्रेड के लिए अपने कैश से पुराने मान को पढ़ना संभव है।
हालाँकि, C 11 मानक परमाणु संचालन के लिए std::atomic लाइब्रेरी प्रदान करता है , यह सुनिश्चित करते हुए कि नवीनतम मान अन्य कैश से पढ़ा गया है। यह मजबूत मेमोरी ऑर्डरिंग के माध्यम से हासिल किया जाता है, जो गारंटी देता है कि एक थ्रेड द्वारा किए गए परिवर्तन अन्य थ्रेड्स पर लगातार क्रम में दिखाई देते हैं। कंपाइलर, लेकिन यह परमाणु पहुंच की कोई गारंटी प्रदान नहीं करता है। इसे मुख्य रूप से मेमोरी-मैप्ड I/O या सिग्नल हैंडलिंग जैसे परिदृश्यों के लिए डिज़ाइन किया गया है।
थ्रेड्स के बीच साझा चर के संदर्भ में, जैसे कि निम्नलिखित:
std::atomic
std::atomicai;
परमाणु संचालन के साथ काम करने के लिए सावधानीपूर्वक विचार और समझ की आवश्यकता होती है। उत्पादन कोड में परमाणु संचालन को प्रभावी ढंग से लागू करने के लिए पृष्ठभूमि सामग्री और मौजूदा कोड पर गहन शोध करने की सलाह दी जाती है। कई मामलों में, जब परमाणु संचालन की चुनौतियाँ आवश्यक नहीं होती हैं, तो ताले एक व्यवहार्य विकल्प प्रदान कर सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3