चर्चा से मैंने देखा कि ऐसा लगता है कि परमाणु संचालन और धागा सुरक्षा एक ही बात है, लेकिन बहुत सारे लोग कहते हैं कि वे अलग हैं। क्या कोई मुझे अंतर बता सकता है अगर कोई है?
चर्चा से मैंने देखा कि ऐसा लगता है कि परमाणु संचालन और धागा सुरक्षा एक ही बात है, लेकिन बहुत सारे लोग कहते हैं कि वे अलग हैं। क्या कोई मुझे अंतर बता सकता है अगर कोई है?
जवाबों:
एटोमिक ऑपरेशंस म्यूटेक्स या सेमाफोर जैसे कुछ प्रकार के तालों का उपयोग करके या तो थ्रेड सुरक्षा प्राप्त करने का एक तरीका है, जो परमाणु संचालन का आंतरिक रूप से उपयोग करते हैं या एटमिक्स और मेमोरी बाड़ का उपयोग करके लॉक फ्री सिंक्रोनाइज़ेशन को लागू करते हैं।
इसलिए आदिम डेटा प्रकारों पर परमाणु संचालन थ्रेड सुरक्षा को प्राप्त करने के लिए एक उपकरण है, लेकिन थ्रेड सुरक्षा को स्वचालित रूप से सुनिश्चित नहीं करता है क्योंकि आपके पास आमतौर पर कई ऑपरेशन होते हैं जो एक दूसरे पर भरोसा करते हैं। आपको यह सुनिश्चित करना होगा कि म्यूटेक्स का उपयोग करके इन कार्यों को बिना किसी रुकावट के किया जाता है।
हां, इन परमाणु डेटा प्रकारों में से एक को c # में लिखना थ्रेड सुरक्षित है, लेकिन यह उस फ़ंक्शन को नहीं बनाता है जो आप उन्हें थ्रेड सुरक्षित में उपयोग करते हैं। यह केवल यह सुनिश्चित करता है कि एकल लेखन को सही ढंग से निष्पादित किया जाता है, भले ही दूसरा धागा "उसी समय" तक पहुंच जाए। कभी कम नहीं, वर्तमान थ्रेड से अगला पढ़ा गया मान प्राप्त करने के लिए सुनिश्चित नहीं किया जाता है क्योंकि पहले लिखा गया एक अलग धागा उस पर लिखा हो सकता है, केवल यह कि पढ़ा गया मान मान्य है।
परमाणु और धागा-सुरक्षा दो अलग-अलग चीजें हैं। एटोमिसिटी एक ऑपरेशन के "ऑल-एंड-नथिंग" गुणवत्ता को संदर्भित करता है; यदि कोई ऑपरेशन 100% सफलतापूर्वक नहीं किया जा सकता है, तो सिस्टम को उस समग्र स्थिति में रहना चाहिए जो ऑपरेशन शुरू होने से पहले हुआ था। क्लासिक उदाहरण एक डेटाबेस लेनदेन है; अपने हेडर और कई लाइन आइटम सहित एक इनवॉइस को सहेजते समय, प्रत्येक एकल डेटाबेस पंक्ति के प्रत्येक भाग को सफलतापूर्वक जगह पर रखा जाना चाहिए; यदि नहीं, तो डेटा खो गया है या दूषित है। यदि एक पंक्ति वस्तु नहीं डाली जा सकती है, तो न केवल शेष अन्य पंक्तियाँ सम्मिलित की जानी चाहिए, बल्कि पहले से संसाधित की गई कोई भी पंक्ति नहीं रहनी चाहिए।
थ्रेड-सेफ्टी में एटमॉसिस सहित चीजों के संयोजन को संदर्भित किया जाता है, जो एक ऑपरेशन को "रीएंन्ट्रेंट" होने की अनुमति देता है; कई श्रमिक एक ही ऑपरेशन कर सकते हैं, एक ही या अलग-अलग समय पर शुरू हो सकते हैं, बिना किसी अन्य पर प्रभाव के। थ्रेड-सुरक्षित संचालन के लिए कई मॉडल हैं; उनमें से ज्यादातर वैचारिक रूप से पूरी तरह अलगाव में कई समानांतर कार्यों को चलाने के लिए उबलते हैं (दो कार्यकर्ता दो अलग-अलग वस्तुओं पर एक ही कार्य कर सकते हैं या वस्तुओं के संग्रह को कभी भी मौजूद अन्य कार्यकर्ता को भी जाने बिना), या "पाइपलाइन" स्थापित कर सकते हैं जिसके भीतर एकाधिक श्रमिक प्रत्येक एक कार्य को पूरे ऑपरेशन से बाहर करते हैं (या तो प्रत्येक कार्यकर्ता पहले कार्य से अगले और इतने पर आगे बढ़ता है, या फिर किसी एक कार्य पर ध्यान केंद्रित करता है और अपने मध्यवर्ती "काम उत्पाद" को अगले कार्यकर्ता को सौंप देता है)।
एक परमाणु ऑपरेशन एक ऑपरेशन है जिसे बाधित नहीं किया जा सकता है।
एक सुरक्षित धागा एक ऐसा धागा है जिसे सुरक्षित रूप से बाधित किया जा सकता है।
थ्रेड सुरक्षा परमाणु संचालन के साथ प्राप्त होती है, विशेष रूप से तर्क में जो महत्वपूर्ण संसाधनों को कई बार एक्सेस करने से रोकता है।
मूल परमाणु ऑपरेशन टेस्ट-एंड-सेट है , जिसका उपयोग सेमाफोर को लागू करने के लिए किया जाता है, जो बदले में धागा सुरक्षा को लागू करने के लिए उपयोग किया जाता है।
थ्रेड-सुरक्षा एक ढांचा या "अवधारणा" है, परमाणु ऑपरेशन एक उपसमुच्चय है, जिसे 'थ्रेड-सेफ' के रूप में दर्जा प्राप्त करने का एक साधन (कई में से एक) है।
थ्रेड सुरक्षा एक ऐसी प्रक्रिया को संदर्भित करती है जिसे अलग-अलग थ्रेड्स द्वारा एक्सेस किया जा सकता है, जहां एक की पहुंच (और डेटा में हेरफेर), दूसरे के संचालन की अखंडता को दूषित नहीं करेगा।
प्रोग्रामर के बहुत से कौशल यह जानना चाहते हैं कि इसे कैसे प्राप्त किया जाए, स्थिति और प्रमुख उद्देश्य के आधार पर, आपको लागू करने की आवश्यकता हो सकती है, उदाहरण के लिए: ताले, सेमाफोर, लाचेस, परमाणु वस्तुएं, सिंक्रनाइज़ेशन नियम आदि ...