गोलंग में एक साथ कई चैनलों से पढ़ना
गोलंग में, "कोई भी-एक" चैनल बनाना संभव है, जहां एकाधिक गोरोइन एक ही चैनल पर एक साथ लिख सकते हैं। आइए जानें कि इस कार्यक्षमता को कैसे प्राप्त किया जाए।
एक दृष्टिकोण एक चयन कथन का उपयोग करना है, जो आपको डेटा प्राप्त करने के लिए कई चैनलों की प्रतीक्षा करने की अनुमति देता है:
func main() {
// Create input channels
c1 := make(chan int)
c2 := make(chan int)
// Create output channel
out := make(chan int)
// Start a goroutine that reads from both input channels and sums the received values
go func(in1, in2 <-chan int, out chan<- int) {
for {
sum := 0
select {
case sum = <-in1:
sum = <-in2
case sum = <-in2:
sum = <-in1
}
out <- sum
}
}(c1, c2, out)
}
यह गोरोइन अनिश्चित काल तक चलता है, दोनों चैनलों से पढ़ता है और प्राप्त मूल्यों का योग आउटपुट चैनल पर भेजता है। गोरोइन को समाप्त करने के लिए, दोनों इनपुट चैनलों को बंद करना आवश्यक है।
एक वैकल्पिक दृष्टिकोण के रूप में, आप निम्नलिखित कोड का उपयोग कर सकते हैं:
func addnum(num1, num2, sum chan int) {
done := make(chan bool)
go func() {
n1 := <-num1
done <- true // Signal completion of one channel read
}()
n2 := <-num2 // Read from the other channel
<-done // Wait for the first read to complete
sum <- n1 n2
}
यह फ़ंक्शन एक चैनल सफलतापूर्वक पढ़े जाने पर सूचित करने के लिए एक अलग "पूर्ण" चैनल का उपयोग करता है। हालाँकि, यह दृष्टिकोण कम लचीला हो सकता है, क्योंकि इसमें इनपुट चैनलों को लिखने वाले गोरआउट्स को संशोधित करने की आवश्यकता होती है।
उचित दृष्टिकोण आपके एप्लिकेशन की विशिष्ट आवश्यकताओं पर निर्भर करता है। इससे कोई फर्क नहीं पड़ता कि आप कौन सी विधि चुनते हैं, गोलांग की समवर्ती विशेषताएं एक साथ कई चैनलों को संभालने के लिए शक्तिशाली उपकरण प्रदान करती हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3