2015-09-28 7 views
11

Go source code की runtime/proc.go फ़ाइल में सुरक्षित बिंदु फ़ंक्शंस का संदर्भ देने वाली कई टिप्पणियां हैं, जो समय पर उन बिंदुओं से संबंधित प्रतीत होती हैं जहां यह कचरा संग्रहण के लिए सुरक्षित है। हालांकि, मुझे इन कार्यों की कोई परिभाषा नहीं मिली।गो स्रोत कोड में उल्लिखित "सुरक्षित बिंदु कार्य" क्या हैं?

सुरक्षित बिंदु फ़ंक्शन, उनके लिए क्या उपयोग किया जाता है, और ऐसे कार्यों के कुछ उदाहरण क्या हैं?

+5

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

+0

@JimB, मैं गो में थ्रेडिंग लाइब्रेरी कार्यान्वयन को समझने की कोशिश कर रहा हूं (यानी, goroutines कैसे कार्यान्वित किया जाता है और निर्धारित किया गया है), और यह कम से कम स्पर्शिक रूप से जीसी व्यवहार और सुरक्षित बिंदु से संबंधित प्रतीत होता है। आप सही हैं, इसका भाषा के उपयोग से कोई लेना देना नहीं है। – merlin2011

+2

मैं वर्तमान रनटाइम पर अद्यतित नहीं हूं, लेकिन यह जीसी से निकटता से जुड़ा हुआ है, [यह बात] (http://talks.golang.org/2015/go-gc.pdf) में रुचि हो सकती है आप, [वीडियो] के साथ (https://www.youtube.com/watch?v=aiv1JOfMjm0)। – JimB

उत्तर

1

यहां सबकुछ है जो मैं इस विषय पर खोद सकता हूं।

मुझे गो के जीसी सुरक्षित बिंदु here के बारे में कुछ चर्चा मिली।

प्रमुख बिंदु जहां जीसी चर क्या सब पर नज़र रखने और पकड़ पंजीकृत करता है सकते हैं:

यह सुरक्षित अंक (के रूप में जाओ कार्यान्वयन में प्रयुक्त) की तरह दिखता है प्रभावी रूप से एक सुरक्षित बिंदु के पारंपरिक परिभाषा के रूप में ही कर रहे हैं

एक ही धागे पर किसी अन्य उपयोगकर्ता कहा गया है कि जी सी

ढेर जांच में पूर्वक्रय अंक परतों समारोह के दौरान prologs

और कहा कि इस दावे के लिए स्रोत निम्नलिखित है: https://github.com/golang/go/issues/10958

this post golang-देव मेलिंग सूची पर के अनुसार, safepoints भी कहा जाता है "कॉल साइटों"।

गो के सुरक्षित बिंदुओं की प्रकृति में कुछ अंतर्दृष्टि प्राप्त करने के लिए, मुझे लगता है कि इसके जीसी के विकास को देखना महत्वपूर्ण है।

एक समानांतर रोकने के दुनिया 1.5 जाओ करने से पहले, जाओ इस्तेमाल किया गया है (STW) कलेक्टर: This post निम्नलिखित का उल्लेख है।

गो 1.5 एक समवर्ती संग्राहक प्रस्तुत करता है।

उस प्रश्न का एक और जवाब का उल्लेख है:

जाओ 1.7 के रूप में, एक शेष असीम के स्रोत और संभावित गैर तुच्छ रोकने के दुनिया (STW) समय ढेर है फिर से स्कैनिंग ।

1.8 के रूप में, यह worst-case stop-the-world times have been improved जैसा दिखता है।

इसके अलावा, here गो के कचरा कलेक्टर का वर्तमान कार्यान्वयन है। यदि आप टिप्पणियों के माध्यम से पढ़ते हैं, तो आप देखेंगे कि यह एक गैर-पीढ़ी के मार्क-स्वीप कलेक्टर है। आप इसके बारे में यहां और अधिक पढ़ सकते हैं: https://blog.plan99.net/modern-garbage-collection-911ef4f8bd8e#.udz1kjk3b

अंत में, here गॉल टेन द्वारा गोलांग-देव मेलिंग सूची पर एक पुरानी पोस्ट है जो एक चलती कचरा कलेक्टर के उपयोग को प्रेरित करती है।उन्होंने दावा किया (2012 में उस समय) कि गो "रूढ़िवादी, गैर-स्थानांतरित संग्राहक" का उपयोग कर रहे थे और उन्होंने सुरक्षित स्थानों की विशेषताओं पर चर्चा की जो लंबे समय से चलने वाले कचरा कलेक्टर की अनुमति देंगे।

जबकि गो का कचरा कलेक्टर moving away from long pauses रहा है और अब यह "समवर्ती, त्रि रंग, मार्क-स्वीप कलेक्टर" है, यह अभी भी एक गैर-पीढ़ी जीसी है। ऐसा लगता है कि गो का जीसी आधुनिक, उद्यम दृष्टिकोण के बजाय 70 के दशक से जीसी विचारों पर निर्माण कर रहा है।

ऐसा लगता है कि एक सुरक्षित बिंदु की गो की धारणा आधुनिक गुणों के साथ एक सुरक्षित बिंदु की बजाय एक सुरक्षित बिंदु की पारंपरिक धारणा के अनुरूप है जो पीढ़ी के कचरे के संग्रह की अनुमति देती है।

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