क्या गो चैनल अवरुद्ध होने पर ऑर्डर बनाए रखते हैं?
गो में, गोरोइन समवर्ती रूप से कार्यों को निष्पादित करते हैं, अक्सर चैनलों के माध्यम से संचार करते हैं। जब कई गोरोइन एक गैर-अवरुद्ध चैनल पर एक साथ लिखने का प्रयास करते हैं, तो उनके मान भेजे जाने का क्रम महत्वपूर्ण होता है। यह प्रश्न पता लगाता है कि क्या गो चैनल ऐसे परिदृश्यों में व्यवस्था बनाए रखते हैं। चैनलों का टुकड़ा:
func प्रसारण(सी
इस कार्यान्वयन में, कॉलर को ब्लॉक करने से बचने के लिए चैनलों को एसिंक्रोनस रूप से संदेश भेजने के लिए गोरआउट्स का उपयोग किया जाता है। हालाँकि, यह प्रश्न प्रत्येक चैनल द्वारा प्राप्त संदेशों के क्रम के बारे में चिंता पैदा करता है, खासकर जब कई लेखक शामिल होते हैं।गो चैनल विनिर्देश बताता है कि जब चैनल की क्षमता शून्य से अधिक होती है, तो यह अतुल्यकालिक रूप से व्यवहार करता है। ऐसे मामलों में, जब तक चैनल भरा न हो, लेखन बिना अवरोध के सफल हो जाता है। संदेश भी उसी क्रम में प्राप्त होते हैं जिस क्रम में वे भेजे जाते हैं।func broadcast(c गारंटी का अभावइस प्रश्न का उत्तर निराशाजनक है : नहीं, कोई गारंटी नहीं है. यहां तक कि जब चैनल के पास उपलब्ध क्षमता होती है, तब भी जिस क्रम में कई गोरोइनट इसे लिखते हैं, उसे सुनिश्चित नहीं किया जा सकता है।
ऐसे परिदृश्य की कल्पना करें जहां दो गोरोइनट लगभग एक साथ चैनल को संदेश भेजने के लिए निर्धारित हैं। जरूरी नहीं कि जिस गोरआउटाइन को पहले शुरू किया गया हो, वह जरूरी नहीं कि पहले निष्पादित हो, जिससे अप्रत्याशित संदेश क्रम उत्पन्न हो। यदि संदेशों का क्रम महत्वपूर्ण है, तो वैकल्पिक तंत्र, जैसे कतार या संदेश दलाल, पर विचार किया जाना चाहिए।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3