2010-02-17 7 views
8

के बीच अंतर पुन: प्रवेश फ़ंक्शन और थ्रेड सुरक्षित फ़ंक्शन के बीच क्या अंतर है?पुन: प्रवेशकर्ता और थ्रेड-सेफ फ़ंक्शन

+1

http: // stackoverflow।कॉम/प्रश्न/2274254/किस प्रकार का कोड-कॉल-टू-कॉल-एंट्रंट/2274289 # 2274289 –

+0

समान समान नहीं होने पर बहुत समान है: http://stackoverflow.com/questions/856823/threadsafe-vs- पुन: प्रवेश –

उत्तर

1

क्या आपने wiki article on the subject चेक किया था। यह अच्छी तरह से बताता है तो कृपया पूरी चर्चा के लिए देखें।

लेख से कुछ ही प्रासंगिक बिट:

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

और

reentrancy की यह परिभाषा मल्टी-थ्रेडेड वातावरण में धागे की सुरक्षा की है कि से अलग है। एक पुनर्विक्रेता subroutine धागा सुरक्षा प्राप्त कर सकते हैं, लेकिन अकेले पुनर्विक्रेता होने के नाते सभी स्थितियों में थ्रेड-सुरक्षित होने के लिए पर्याप्त नहीं हो सकता है। इसके विपरीत, थ्रेड-सुरक्षित कोड को पुनर्विक्रेता नहीं होना चाहिए (उदाहरण के लिए नीचे देखें)।

+4

कृपया एक वास्तविक उत्तर पोस्ट करें जो लिंक को संक्षेप में ठंडा होने पर सारांशित करता है (जैसा कि यहां और अब मामला है)। – nedR

2

पुन: प्रवेशकर्ता का मतलब कोई वैश्विक स्थिति (केवल स्थानीय) नहीं है।

थ्रेड सुरक्षित का मतलब है कि 2 (या अधिक) धागे एक दूसरे के साथ संघर्ष करने के लिए संभव नहीं है (विवादित मान लिखकर)।

+0

लेकिन जैसा कि ब्रायन कहते हैं, विकी आलेख इसे अच्छी तरह बताता है ... –

2
  • एक धागा सुरक्षित समारोह, कई धागे से एक साथ कहा जा सकता है यहां तक ​​कि जब आमंत्रण, साझा डेटा का उपयोग क्योंकि साझा किए गए डेटा के लिए सभी संदर्भ क्रमांकित हैं।

  • एक रैत्रांत समारोह कर सकते हैं भी एक से अधिक थ्रेड से एक साथ कहा जा है, लेकिन हर मंगलाचरण अपने स्वयं के डेटा का उपयोग करता है केवल यदि।

इसलिए, एक धागा सुरक्षित समारोह हमेशा रैत्रांत है, लेकिन एक रैत्रांत समारोह हमेशा धागा सुरक्षित नहीं है।

अंतर उदाहरण के साथ पर cottoned जा सकता है,

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

स्रोत: Qt

संबंधित मुद्दे