Golang fish, Искомое объяснение.gooroutine имеет приоритет или нет?
Goroutine это имеют приоритет или нет?
package main
import (
"fmt"
)
func sum(a []int, c chan int) {
var total int
for _, v := range a {
total += v
}
c <- total
}
func main() {
a := []int{7, 2, 8, -9, 4, 0}
c := make(chan int)
go sum(a[:len(a)/2], c)
go sum(a[len(a)/2:], c)
// x, y := <-c, <-c
x := <-c
y := <-c
fmt.Println(x, y, x+y)
}
, почему х -5 лет 17, это не первый goroutine заблокирован? если
go sum(a[:len(a)/2], c)
x := <-c
go sum(a[len(a)/2:], c)
y := <-c
этот порядок является правильным. почему ...
спасибо, я хочу знать, что goroutine является параллельным или параллельным? – rancongjie
Это зависит от того, как установлен режим runtime.GOMAXPROCS. Вот хорошее объяснение: https://www.goinggo.net/2014/01/concurrency-goroutines-and-gomaxprocs.html – tonisuter