परमाणु ऑपरेशन और थ्रेड सुरक्षा के बीच अंतर?


10

चर्चा से मैंने देखा कि ऐसा लगता है कि परमाणु संचालन और धागा सुरक्षा एक ही बात है, लेकिन बहुत सारे लोग कहते हैं कि वे अलग हैं। क्या कोई मुझे अंतर बता सकता है अगर कोई है?


4
परमाणु संचालन धागा सुरक्षा सुनिश्चित करने में मदद करेगा, लेकिन वे संभवतः एक ही चीज कैसे हो सकते हैं ? एक "धागा" एक "ऑपरेशन" के समान नहीं है।
user50849

जवाबों:


11

एटोमिक ऑपरेशंस म्यूटेक्स या सेमाफोर जैसे कुछ प्रकार के तालों का उपयोग करके या तो थ्रेड सुरक्षा प्राप्त करने का एक तरीका है, जो परमाणु संचालन का आंतरिक रूप से उपयोग करते हैं या एटमिक्स और मेमोरी बाड़ का उपयोग करके लॉक फ्री सिंक्रोनाइज़ेशन को लागू करते हैं।

इसलिए आदिम डेटा प्रकारों पर परमाणु संचालन थ्रेड सुरक्षा को प्राप्त करने के लिए एक उपकरण है, लेकिन थ्रेड सुरक्षा को स्वचालित रूप से सुनिश्चित नहीं करता है क्योंकि आपके पास आमतौर पर कई ऑपरेशन होते हैं जो एक दूसरे पर भरोसा करते हैं। आपको यह सुनिश्चित करना होगा कि म्यूटेक्स का उपयोग करके इन कार्यों को बिना किसी रुकावट के किया जाता है।

हां, इन परमाणु डेटा प्रकारों में से एक को c # में लिखना थ्रेड सुरक्षित है, लेकिन यह उस फ़ंक्शन को नहीं बनाता है जो आप उन्हें थ्रेड सुरक्षित में उपयोग करते हैं। यह केवल यह सुनिश्चित करता है कि एकल लेखन को सही ढंग से निष्पादित किया जाता है, भले ही दूसरा धागा "उसी समय" तक पहुंच जाए। कभी कम नहीं, वर्तमान थ्रेड से अगला पढ़ा गया मान प्राप्त करने के लिए सुनिश्चित नहीं किया जाता है क्योंकि पहले लिखा गया एक अलग धागा उस पर लिखा हो सकता है, केवल यह कि पढ़ा गया मान मान्य है।


क्या इंट, बूल, फ्लोट धागा सुरक्षित या परमाणु हैं?
user960567

1
@ user960567 - डेटा प्रकार बस हैं: डेटा प्रकार। यह कंपाइलर पर निर्भर है कि वे कैसे उन्हें एक्सेस कर सकते हैं। एक 8064 सीपीयू पर एक इंट्रिप्ट के बारे में सोचो।
मौविसिल

2
C # में, विशेष रूप से, इस प्रश्न के साथ टैग किया गया है, पढ़ना और लिखना बुनियादी डेटा-प्रकारों पर परमाणु होना चाहिए।
एकमा

2
और हाँ, इन परमाणु डेटा प्रकारों में से एक को c # में लिखना थ्रेड सुरक्षित है, लेकिन यह उस फ़ंक्शन को नहीं बनाता है जिसका उपयोग आप थ्रेड सेफ़ में करते हैं। यह केवल यह सुनिश्चित करता है कि एकल लेखन को सही ढंग से निष्पादित किया जाता है, भले ही दूसरा धागा "उसी समय" तक पहुंच जाए। कभी कम नहीं, वर्तमान थ्रेड से अगला पढ़ा गया मान प्राप्त करने के लिए सुनिश्चित नहीं किया जाता है क्योंकि पहले लिखा गया एक अलग धागा उस पर लिखा हो सकता है, केवल यह कि पढ़ा गया मान मान्य है।
आर्ची

4
x = 5 c # में परमाणु है। लेकिन इस ऑपरेशन के तुरंत बाद इसे ओवरराइट किया जा सकता था। x = x + 1 को 1 से लोड किया जा रहा है। x को रजिस्टर में लोड किया जा रहा है। रजिस्टर में इंक्रीमेंट x 3. मेमोरी में x स्टोर करें। यदि एक दूसरा धागा एक ही समय में एक ही काम करता है, तो दोनों समान मूल्य को लोड करेंगे, इसे बढ़ाएंगे और इसे स्टोर करेंगे जिसके परिणामस्वरूप x केवल दो बार के बजाय एक बार बढ़ा हुआ होगा। InterlockedIncrement या तो परमाणु वृद्धि को निष्पादित करने के लिए एक विशेष प्रोसेसर निर्देश का उपयोग करता है या लॉकिंग मैकेनिज्म, जैसे CAS का उपयोग करके यह सुनिश्चित करता है कि नया मान न लिखे जाने पर कोई अन्य धागा पुराना मान नहीं पढ़ सकता है।
आर्ची डेसी

3

परमाणु और धागा-सुरक्षा दो अलग-अलग चीजें हैं। एटोमिसिटी एक ऑपरेशन के "ऑल-एंड-नथिंग" गुणवत्ता को संदर्भित करता है; यदि कोई ऑपरेशन 100% सफलतापूर्वक नहीं किया जा सकता है, तो सिस्टम को उस समग्र स्थिति में रहना चाहिए जो ऑपरेशन शुरू होने से पहले हुआ था। क्लासिक उदाहरण एक डेटाबेस लेनदेन है; अपने हेडर और कई लाइन आइटम सहित एक इनवॉइस को सहेजते समय, प्रत्येक एकल डेटाबेस पंक्ति के प्रत्येक भाग को सफलतापूर्वक जगह पर रखा जाना चाहिए; यदि नहीं, तो डेटा खो गया है या दूषित है। यदि एक पंक्ति वस्तु नहीं डाली जा सकती है, तो न केवल शेष अन्य पंक्तियाँ सम्मिलित की जानी चाहिए, बल्कि पहले से संसाधित की गई कोई भी पंक्ति नहीं रहनी चाहिए।

थ्रेड-सेफ्टी में एटमॉसिस सहित चीजों के संयोजन को संदर्भित किया जाता है, जो एक ऑपरेशन को "रीएंन्ट्रेंट" होने की अनुमति देता है; कई श्रमिक एक ही ऑपरेशन कर सकते हैं, एक ही या अलग-अलग समय पर शुरू हो सकते हैं, बिना किसी अन्य पर प्रभाव के। थ्रेड-सुरक्षित संचालन के लिए कई मॉडल हैं; उनमें से ज्यादातर वैचारिक रूप से पूरी तरह अलगाव में कई समानांतर कार्यों को चलाने के लिए उबलते हैं (दो कार्यकर्ता दो अलग-अलग वस्तुओं पर एक ही कार्य कर सकते हैं या वस्तुओं के संग्रह को कभी भी मौजूद अन्य कार्यकर्ता को भी जाने बिना), या "पाइपलाइन" स्थापित कर सकते हैं जिसके भीतर एकाधिक श्रमिक प्रत्येक एक कार्य को पूरे ऑपरेशन से बाहर करते हैं (या तो प्रत्येक कार्यकर्ता पहले कार्य से अगले और इतने पर आगे बढ़ता है, या फिर किसी एक कार्य पर ध्यान केंद्रित करता है और अपने मध्यवर्ती "काम उत्पाद" को अगले कार्यकर्ता को सौंप देता है)।


2

एक परमाणु ऑपरेशन एक ऑपरेशन है जिसे बाधित नहीं किया जा सकता है।

एक सुरक्षित धागा एक ऐसा धागा है जिसे सुरक्षित रूप से बाधित किया जा सकता है।

थ्रेड सुरक्षा परमाणु संचालन के साथ प्राप्त होती है, विशेष रूप से तर्क में जो महत्वपूर्ण संसाधनों को कई बार एक्सेस करने से रोकता है।

मूल परमाणु ऑपरेशन टेस्ट-एंड-सेट है , जिसका उपयोग सेमाफोर को लागू करने के लिए किया जाता है, जो बदले में धागा सुरक्षा को लागू करने के लिए उपयोग किया जाता है।


बहु-चरण संचालन को बाधित नहीं किया जा सकता है और इसे अभी भी परमाणु कहा जा सकता है यदि इसे वापस रोल करने की गारंटी है तो यह परिवर्तन है?
user50849

1
सं। परमाणु को इसके व्युत्पत्तिगत अर्थ में समझा जाना है: ςομο at, atomos, अविभाज्य।
मौविसील

क्या इंट, बूल, फ्लोट धागा सुरक्षित या परमाणु हैं?
user960567

लेकिन वहाँ के बीच एक अंतर है है किया जा रहा है indivisble, और प्रदर्शित होने के एक करने के लिए अविभाज्य पर्यवेक्षक ? आपकी परिभाषा के अनुसार, परमाणु संचालन में एक से अधिक चरण नहीं हो सकते। मेरा मानना ​​है कि विकिपीडिया की परमाणु कार्रवाई की परिभाषा में "प्रतीत होता है" शब्द महत्वपूर्ण है। (चैट में अगर कोई इसे वहां लाना चाहता है) :)
user50849

एक बड़ा अंतर है: एक सुरक्षित धागा बाधित हो सकता है, और कितना समय का कोई अंतर नहीं है। यह रीयलटाइम कंप्यूटिंग में महत्वपूर्ण है। एक परमाणु संचालन (रुकावट ताले के साथ अगर यह बहु-चरण है) समय की अनुमानित राशि के बाद समाप्त करने के लिए गारंटी है।
मौविसिल

1

थ्रेड-सुरक्षा एक ढांचा या "अवधारणा" है, परमाणु ऑपरेशन एक उपसमुच्चय है, जिसे 'थ्रेड-सेफ' के रूप में दर्जा प्राप्त करने का एक साधन (कई में से एक) है।

थ्रेड सुरक्षा एक ऐसी प्रक्रिया को संदर्भित करती है जिसे अलग-अलग थ्रेड्स द्वारा एक्सेस किया जा सकता है, जहां एक की पहुंच (और डेटा में हेरफेर), दूसरे के संचालन की अखंडता को दूषित नहीं करेगा।

प्रोग्रामर के बहुत से कौशल यह जानना चाहते हैं कि इसे कैसे प्राप्त किया जाए, स्थिति और प्रमुख उद्देश्य के आधार पर, आपको लागू करने की आवश्यकता हो सकती है, उदाहरण के लिए: ताले, सेमाफोर, लाचेस, परमाणु वस्तुएं, सिंक्रनाइज़ेशन नियम आदि ...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.