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

गो में बफ़र्ड सेंड और अनबफ़र्ड रिसीव चैनल पर एक साथ चयन कैसे करें?

2024-11-06 को प्रकाशित
ब्राउज़ करें:186

How to Select on a Buffered Send and Unbuffered Receive Channel Simultaneously in Go?

गो सेंड एंड रिसीव चैनल एक साथ चुनें

गो में, सेलेक्ट स्टेटमेंट का उपयोग करके चैनलों पर नॉन-ब्लॉकिंग I/O ऑपरेशन करना संभव है। हालाँकि, बफ़र किए गए सेंड चैनल (चान

चैनल की लंबाई/क्षमता की जांच करने से संबंधित समस्या

एक सामान्य दृष्टिकोण भेजने या प्राप्त करने से पहले चैनलों की लंबाई या क्षमता की जांच करना है। हालाँकि, यह विश्वसनीय नहीं है क्योंकि चैनल की स्थिति चेक और उसके बाद के ऑपरेशन के बीच बदल सकती है:

if len(r) > 0 {
    // Optionally execute other code

    r 

समाधान: समय विलंब के साथ डिफ़ॉल्ट मामला

इस समस्या को हल करने के लिए, आप एक डिफ़ॉल्ट मामले के साथ एक चयन कथन का उपयोग कर सकते हैं जिसमें थोड़े समय की देरी शामिल है। यदि दोनों चैनल तैयार नहीं हैं तो यह अत्यधिक सीपीयू उपयोग को रोकता है और आपको ऑपरेशन का पुनः प्रयास करने की अनुमति देता है:

s := make(chan

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

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

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

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

Copyright© 2022 湘ICP备2022001581号-3