गो भाषा: बफ़र किए गए और अनबफ़र्ड चैनलों पर एक साथ चयन करना
हाथ में कार्य एक बफ़र्ड सेंड चैनल और एक पर एक साथ चयन प्राप्त करना है लगातार सीपीयू संसाधनों का उपभोग किए बिना असंबद्ध प्राप्त चैनल। यह परिदृश्य तब तक ब्लॉक करने के बराबर है जब तक कोई चैनल बिना किसी डेटा को प्रसारित किए भेजने के लिए तैयार नहीं हो जाता।
इसे संबोधित करने के लिए, हम एक डिफ़ॉल्ट केस के साथ एक चयन कथन को नियोजित कर सकते हैं। जब कोई भी चैनल तैयार नहीं होता है, तो डिफ़ॉल्ट केस चालू हो जाता है, जिससे थोड़ी नींद की अवधि शुरू हो जाती है। यह डेटा भेजने और प्राप्त करने के निरंतर प्रयासों को सक्षम करते हुए संसाधन संरक्षण की अनुमति देता है:
package main
import (
"fmt"
"time"
)
func valueToSend() int {
// Generate a value to send, calculated/acquired each attempt
return 0
}
func main() {
s := make(chanडेटा भेजने या प्राप्त करने से पहले चैनल की लंबाई या क्षमता जांच पर भरोसा करते समय सावधानी बरती जानी चाहिए। इस तरह के तरीकों से अप्रत्याशित व्यवहार हो सकता है, क्योंकि चेक और वास्तविक भेजने/प्राप्त करने के ऑपरेशन के बीच चैनल की स्थिति बदल सकती है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3