मैं जाने के लिए नया हूं और समवर्ती और चैनल को समझने में समस्या है।जाओ समवर्ती और चैनल भ्रम
package main
import "fmt"
func display(msg string, c chan bool){
fmt.Println("display first message:", msg)
c <- true
}
func sum(c chan bool){
sum := 0
for i:=0; i < 10000000000; i++ {
sum++
}
fmt.Println(sum)
c <- true
}
func main(){
c := make(chan bool)
go display("hello", c)
go sum(c)
<-c
}
कार्यक्रम का उत्पादन होता है:
display first message: hello
10000000000
लेकिन मैंने सोचा कि यह केवल एक लाइन होना चाहिए:
display first message: hello
तो मुख्य समारोह में, < -c रोक रहा है और चैनल को डेटा भेजने के लिए अन्य दो राउंटीन जाने की प्रतीक्षा करता है। एक बार मुख्य समारोह सी से डेटा प्राप्त करने के बाद, इसे आगे बढ़ना चाहिए और बाहर निकलना चाहिए।
प्रदर्शन और योग एक साथ चलाने के लिए और राशि अब ग के लिए इतना प्रदर्शन लेता है सच भेजना चाहिए और इस कार्यक्रम से बाहर निकलने से पहले योग खत्म ...
मुझे यकीन है कि मैं यह स्पष्ट रूप से समझ में नहीं हूँ। क्या कोई इस से मेरी मदद कर सकता है? धन्यवाद!
जैसा कि tux21b सुझाव देता है, यह शायद 'runtime.GOMAXPROCS' के कारण है। इसे टक्कर लगी, और आप एक अंतर देख सकते हैं। स्पष्टीकरण के लिए – dyoo