func main() {
runtime.GOMAXPROCS(1)
var wg sync.WaitGroup
wg.Add(2)
fmt.Println("Start Goroutines")
go func(){
defer wg.Done()
for count := 0; count < 3; count++{
for char := 'a'; char < 'a' + 26; char++{
fmt.Printf("%c ", char)
}
}
}()
go func(){
defer wg.Done()
for count := 0; count < 3; count++{
for char := 'A'; char < 'A' + 26; char++{
fmt.Printf("%c ", char)
}
}
}()
fmt.Println("Waiting To Finish")
wg.Wait()
fmt.Println("\nTerminating Program")
}
输出结果为
Start Goroutines
Waiting To Finish
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p q r s t u v w x y z
Terminating Program
不明白为什么先输出大写字母,书上有一段解释,看了之后依然一头雾水,以下是书上的解释。
第一个goroutine 完成所有显示需要花时间太短了,以至于在调度器切换到第二个goroutine
之前,就完成了所有任务。这也是为什么会看到先输出了所有的大写字母,之后才输出小写字母。
哪位能解释一下什么叫“第一个goroutine 完成所有显示需要花时间太短了,以至于在调度器切换到第二个goroutine
之前,就完成了所有任务”?这句完全不明白在说什么呀?
有疑问加站长微信联系(非本文作者)