समस्या गो कंपाइलर द्वारा अनुकूलन नहीं है, बल्कि सिंक्रनाइज़ेशन की कमी है। i को दिए गए असाइनमेंट के बाद कोई सिंक्रोनाइज़ेशन इवेंट नहीं होता है, इसलिए किसी अन्य गोरोइन द्वारा देखे जाने की गारंटी नहीं है। वास्तव में, एक आक्रामक कंपाइलर पूरे i स्टेटमेंट को हटा सकता है। गोरोइन को एक अलग गोरोइन में एक ही वेरिएबल पर लिखने से उत्पन्न मूल्यों का निरीक्षण करने की गारंटी दी जा सकती है।
एक्सेस को क्रमबद्ध करने के लिए, चैनल संचालन या अन्य सिंक्रनाइज़ेशन के साथ डेटा की सुरक्षा करें आदिम जैसे कि सिंक और सिंक/परमाणु पैकेज में।यदि आपको अपने प्रोग्राम के व्यवहार को समझने के लिए इस दस्तावेज़ के बाकी हिस्सों को पढ़ना होगा, तो आप बहुत चालाक हो रहे हैं। चतुर मत बनो।
सिंक्रनाइज़ेशननिम्नलिखित उदाहरण में, किसी भी सिंक्रोनाइज़ेशन ईवेंट के बाद ए को असाइनमेंट नहीं किया जाता है, इसलिए इसे देखे जाने की गारंटी नहीं है किसी अन्य गोरोइन द्वारा। वास्तव में, एक आक्रामक कंपाइलर पूरे गो स्टेटमेंट को हटा सकता है।
var a string फ़ंक हैलो() { जाओ func() { a = "हैलो" }() प्रिंट(ए) }
निम्न उदाहरण दिखाता है कि सिंक.म्यूटेक्स का उपयोग करके i तक पहुंच को क्रमबद्ध कैसे किया जाए।पैकेज मुख्य आयात ( "साथ-साथ करना" "समय" ) func मुख्य() { एमएक्स := नया(सिंक.म्यूटेक्स) मैं := 1 जाओ func() { के लिए { एमएक्स.लॉक() मैं एमएक्स.अनलॉक() } }()
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3