- demo1
- // This sample program demonstrates how to create goroutines and
- // how the scheduler behaves.
- package main
- import (
- "fmt"
- "runtime"
- "sync"
- )
- // main is the entry point for all Go programs.
- func main() {
- // Allocate 1 logical processor for the scheduler to use.
- runtime.GOMAXPROCS(1)
- // wg is used to wait for the program to finish.
- // Add a count of two, one for each goroutine.
- var wg sync.WaitGroup
- wg.Add(2)
- fmt.Println("Start Goroutines")
- // Declare an anonymous function and create a goroutine.
- go func() {
- // Schedule the call to Done to tell main we are done.
- defer wg.Done()
- // Display the alphabet three times
- for count := 0; count < 3; count++ {
- for char := 'a'; char < 'a'+26; char++ {
- fmt.Printf("%c", char)
- }
- fmt.Println()
- }
- }()
- // Declare an anonymous function and create a goroutine.
- go func() {
- // Schedule the call to Done to tell main we are done.
- defer wg.Done()
- // Display the alphabet three times
- for count := 0; count < 3; count++ {
- for char := 'A'; char < 'A'+26; char++ {
- fmt.Printf("%c", char)
- }
- fmt.Println()
- }
- }()
- // Wait for the goroutines to finish.
- 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
来源: http://www.bubuko.com/infodetail-2948570.html