Go 语言并发编程初体验:简洁高效
package main
import (
"fmt"
"sync"
"time"
)
func main() {
// 使用WaitGroup来同步不同的goroutine
var wg sync.WaitGroup
// 创建一个channel用来传递整数
c := make(chan int)
// 启动一个goroutine来生成数字并发送到channel
wg.Add(1)
go func() {
defer wg.Done()
for i := 0; i < 5; i++ {
c <- i
time.Sleep(time.Millisecond * 500) // 模拟耗时操作
}
close(c) // 使用close函数来表示channel已经完成发送
}()
// 启动另一个goroutine来接收并打印channel中的数字
wg.Add(1)
go func() {
defer wg.Done()
for n := range c {
fmt.Println(n)
}
}()
// 等待所有goroutine完成
wg.Wait()
}
这段代码使用了Go语言的并发特性来实现一个简单的场景:一个goroutine生成数字并发送到一个channel中,另一个goroutine从channel中接收数字并打印。使用了sync.WaitGroup
来同步两个goroutine,确保主goroutine在两个辅助goroutine完成工作之前不会退出。代码简洁且易于理解,展示了Go语言在并发编程中的优秀表现。
评论已关闭