इस कोड में डेडलॉक त्रुटि क्यों नहीं दी गई है?
प्रदान किया गया कोड नेट/http पैकेज को आयात करता है, जो प्रदर्शन करने वाले गोरआउट्स को आरंभ करता है पृष्ठभूमि मतदान. यह अनजाने में गतिरोध डिटेक्टर को अक्षम कर देता है, अपेक्षित गतिरोध त्रुटि को वापस आने से रोकता है।
इस व्यवहार को समझने के लिए, कोड अंश पर विचार करें:
package main
import (
"fmt"
"net/http"
)
func main() {
var ch = make(chan int)
ch इस मामले में, मुख्य फ़ंक्शन एक चैनल बनाता है और उसमें एक मान भेजता है, जो संभावित रूप से गतिरोध पैदा करता है। हालाँकि, चूंकि नेट/http पैकेज आयात किया गया है, डेडलॉक डिटेक्टर अक्षम है और कोई त्रुटि नहीं दी गई है।
यदि आयात हटा दिया गया है:
package main
import "fmt"
func main() {
var ch = make(chan int)
ch डेडलॉक त्रुटि अब सही ढंग से वापस आ गई है क्योंकि बैकग्राउंड पोलिंग गोरोइन सक्रिय नहीं हैं।
यह व्यवहार GitHub मुद्दे में चर्चा के अनुरूप है: https://github.com/golang /go/issues/12734, जहां यह बताया गया है कि नेट/http पैकेज आयात करने से गतिरोध डिटेक्टर अक्षम हो जाता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3