两个进程执行两个goroutine
// 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(2) // 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(" Terminating 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 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 X Y Z
A B C D 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
E F G H I J K L M N O P Q R S T U V W X Y Z
一个进程执行两个goroutine
// 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(" Terminating 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