"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > क्या गो में बफ़र्ड चैनल के समान कोई बफ़र्ड लॉकिंग पैटर्न है?

क्या गो में बफ़र्ड चैनल के समान कोई बफ़र्ड लॉकिंग पैटर्न है?

2024-12-23 को प्रकाशित
ब्राउज़ करें:569

Is There a Buffered Locking Pattern in Go Similar to Buffered Channels?

गो में बफर्ड लॉकिंग पैटर्न

गो में, एक बफर्ड चैनल संचार को तब तक अवरुद्ध किए बिना जारी रखने की अनुमति देता है जब तक कि उसका बफर भर न जाए। हालाँकि, क्या बफरिंग लॉक के लिए एक समान पैटर्न है जो विशिष्ट संख्या में ग्राहकों तक संसाधन पहुंच को सीमित करता है?

संसाधन तक समवर्ती पहुंच को प्रबंधित करने के लिए आदिम सेमाफोर है। एक सेमाफोर को बफ़र किए गए चैनल का उपयोग करके आसानी से कार्यान्वित किया जा सकता है। func f() { // ताला पकड़ो. यदि f के 4 अन्य समवर्ती आह्वान चल रहे हैं तो ब्लॉक हो जाता है। सेमाफोर

इस उदाहरण में, आकार 4 के बफर वाला एक सेमाफोर सेमाफोर का उपयोग करके बनाया गया है:= मेक(चान स्ट्रक्चर{}, 4)। एफ() फ़ंक्शन चैनल पर एक खाली संरचना भेजकर लॉक प्राप्त करने का प्रयास करता है। यदि चैनल बफ़र भरा हुआ है (यानी, f() के 4 समवर्ती उदाहरण पहले से ही चल रहे हैं), तो सेमफोर

var semaphore = make(chan struct{}, 4) // allow four concurrent users

func f() {
    // Grab the lock. Blocks if 4 other concurrent invocations of f are running.
    semaphore 

यह पैटर्न संभावित संसाधन विवाद के मुद्दों को रोकते हुए, एक विशिष्ट संख्या में समवर्ती ग्राहकों के लिए साझा संसाधन तक पहुंच को प्रतिबंधित करने का एक सुविधाजनक तरीका प्रदान करता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3