Go 语言的并发模型是其最引人注目的特性之一。通过 goroutine 和 channel,Go 提供了一种简洁而强大的方式来处理并发编程。
Goroutine 的基础使用
Goroutine 是 Go 运行时管理的轻量级线程。启动一个 goroutine 非常简单,只需要在函数调用前加上 go 关键字:
package main
import (
"fmt"
"time"
)
func printNumbers() {
for i := 1; i <= 5; i++ {
fmt.Printf("Number: %d\n", i)
time.Sleep(100 * time.Millisecond)
}
}
func main() {
go printNumbers()
go printNumbers()
time.Sleep(1 * time.Second)
fmt.Println("Main function ends")
}
Channel 通信
Channel 是 goroutine 之间通信的管道。它确保了数据的同步传输,避免了传统并发编程中常见的竞态条件:
ch := make(chan int)
go func() {
ch <- 42 // 发送数据到 channel
}()
value := <-ch // 从 channel 接收数据
fmt.Println(value)
通过合理使用 goroutine 和 channel,我们可以构建出高效、可维护的并发程序。
继续阅读 →