go 單進程並發
阿新 • • 發佈:2019-02-09
nat fmt all reat each call runtime fin pack
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
go 單進程並發