समवर्ती प्रणालियों में काउंटर विशिष्टता सुनिश्चित करना
मल्टीथ्रेडेड वातावरण में जहां साझा संसाधनों तक पहुंच होती है, वैश्विक चर की विशिष्टता सुनिश्चित करना महत्वपूर्ण हो जाता है। वैश्विक काउंटर के लिए चैनल काउंटर का उपयोग करने वाला आपका कोड स्निपेट समवर्ती अनुरोधों के दौरान निर्दिष्ट संख्याओं के संभावित दोहराव के बारे में चिंता पैदा करता है।
इसे संबोधित करने के लिए, संदर्भित प्रश्न में स्वीकृत उत्तर सिंक.म्यूटेक्स जैसे लॉकिंग तंत्र का उपयोग करने का सुझाव देता है। काउंटर को अद्यतन करने में थ्रेड सुरक्षा के लिए। हालाँकि, ऐसे वैकल्पिक समाधान हैं जो तुलनीय या उससे भी बेहतर प्रदर्शन प्रदान करते हैं।
परमाणु पैकेज: एक बेहतर विकल्प
इस मामले में, परमाणु पैकेज सबसे अलग है। वैश्विक साझा काउंटरों को लागू करने के लिए सबसे कुशल विकल्प। यह पूर्णांक सहित कई सामान्य डेटा प्रकारों के लिए परमाणु संचालन प्रदान करता है:
var globalCounter *int32 = new(int32)
// ...
// Atomically increment the global counter
currentCount := atomic.AddInt32(globalCounter, 1)
इस दृष्टिकोण का उपयोग करके, आप डुप्लिकेट असाइनमेंट की संभावना को समाप्त करते हुए, काउंटर की परमाणु वृद्धि सुनिश्चित कर सकते हैं। यह सुनिश्चित करता है कि प्रत्येक गोरोइन को एक अद्वितीय संख्या प्राप्त होती है। काउंटर को अद्यतन करता है. हालांकि यह कार्यान्वयन काउंटर को पढ़ने और रीसेट करने के लिए थ्रेड-सुरक्षित लग सकता है, लेकिन यह पूरी तरह से मजबूत नहीं है। उचित सिंक्रनाइज़ेशन के बिना, दौड़ की स्थिति और डेटा भ्रष्टाचार का खतरा है।
सही दृष्टिकोण
गो में थ्रेड-सुरक्षित वैश्विक काउंटर बनाने के लिए, अनुशंसित विधि है वैश्विक पूर्णांक मान के लिए परमाणु पैकेज के परमाणु रूप से वृद्धिशील संचालन का उपयोग करना। यह आपकी विशिष्ट आवश्यकता के लिए सबसे कुशल और विश्वसनीय समाधान प्रदान करता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3