go 并发 demo
Posted sea-stream
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go 并发 demo相关的知识,希望对你有一定的参考价值。
两个进程执行两个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
以上是关于go 并发 demo的主要内容,如果未能解决你的问题,请参考以下文章
[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础
golang goroutine例子[golang并发代码片段]
解决go: go.mod file not found in current directory or any parent directory; see ‘go help modules‘(代码片段