2013-08-31 9 views
6

मुझे उत्सुकता है कि गो भाषा कैसे गोरोटाइन शेड्यूल करता है। क्या यह केवल चैनल अनुरोधों और आई/ओ के दौरान स्विच करता है या क्या इसमें आवधिक कोरआउट स्विचिंग लूप होता है?गोराउटिन के बीच संदर्भ स्विच कब तय करते हैं?

उत्तर

8

गो में अभी तक एक प्रीemptive शेड्यूलर नहीं है, लेकिन एक planned for 1.2 है। तो नहीं, गो सीपीयू-केवल गणना के दौरान संदर्भ स्विच नहीं करेगा, केवल आई/ओ के दौरान (स्मृति से पढ़ना भी I/O माना जाता है यदि यह पहले से ही एक रजिस्टर में नहीं है)। आप Issue 543 - preemptive scheduling में इसके बारे में कुछ चर्चा पढ़ सकते हैं।

+0

यदि मैं सही ढंग से समझता हूं, तो इन लिंक 'प्रीemptive शेड्यूलिंग' पर वर्णित कॉलिंग बहुत दूर है। यह वास्तव में preemptive नहीं है, यह सिर्फ इतना है कि उपज प्रोग्रामर के लिए अदृश्य रूप से अधिक स्थानों में डाल दिया जाता है। निश्चित रूप से, यह प्रोग्राम को 'समवर्ती' बनाता है, लेकिन यह अभी भी सहकारी है। मुझे लगता है कि विशेष वीएम (जैसे एरलांग) या प्रत्यक्ष ओएस समर्थन (ओएस थ्रेड्स) के बिना प्रीपेप्टिव मल्टीटास्किंग करना असंभव है। –

+0

क्या आप अपना उत्तर अपडेट कर सकते हैं? मैंने सुना है कि गो थोड़ी देर के लिए फ़ंक्शन कॉल पर पूर्व-खाली करने में सक्षम है, लेकिन मुझे निश्चित रूप से पता नहीं है। –

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