Gitmek için yeni ve eşzamanlılık ve kanal anlama konusunda bir sorun yaşıyorum.Eşzamanlılık ve kanal karışıklığı git
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
}
Programın çıktısı:
display first message: hello
10000000000
Ama yalnızca bir satır olmalıdır düşündü:
display first message: hello
Yani ana işlevi, < -c bu engelleme olduğunu ve diğer iki kanalın da veriyi kanala göndermesini bekler. Ana işlev c'den veri aldığında, devam etmeli ve çıkmalıdır.
ekran ve toplamı aynı anda çalıştırın ve toplamı c sadık göndermesi gerektiğini artık o kadar ekran alır ve toplamı bitirir önce program ben açıkça anlamak emin değilim
... çıkmalısınız. Biri bunun için yardımcı olabilir mi? Teşekkür ederim!
Tux21b'nin önerdiği gibi, muhtemelen 'runtime.GOMAXPROCS' nedeniyle. Yumrukla, bir fark görebiliyorsun. – dyoo