निम्नलिखित सरल जाओ कार्यक्रमफेंक: सभी goroutines सो रहे - गतिरोध
package main
import (
"fmt"
)
func total(ch chan int) {
res := 0
for iter := range ch {
res += iter
}
ch <- res
}
func main() {
ch := make(chan int)
go total(ch)
ch <- 1
ch <- 2
ch <- 3
fmt.Println("Total is ", <-ch)
}
मैं अगर कोई मुझे कारण है कि मैं
throw: all goroutines are asleep - deadlock!
प्राप्त करने के लिए के रूप में प्रबुद्ध कर सकते हैं सोच रहा हूँ यह देखते हुए आप
सीधे प्रश्न से संबंधित नहीं है, लेकिन अभी goroutines को समझने के लिए दिलचस्प है: '' के बाद बाहर <यदि आप 'fmt.Println (" कुल बाहर निकल रहा है ") जोड़ - res' आप इसे देख कभी नहीं हो सकता है, goroutines को पूरा करने के इंतजार किए बिना प्रोग्राम जल्द से बाहर निकल सकता है। –
मैंने कुछ दिन पहले सीखना शुरू कर दिया था और मुझे समझ में नहीं आता कि कैसे res res: = 0 केवल एक बार चल रहा है? क्या पूरा कार्य 3 बार चलाने वाला नहीं है? आपके उदाहरण में केवल लूप 3 गुना चल रहा है। – if237912print
@OybekToirov पूरा कार्य केवल एक बार चलता है, प्रत्येक बार 'इन' चैनल –