Go 语言的并发编程是其核心特性之一,它通过 goroutines 和 channels 提供了强大的并发支持。如果你想入门 Go 语言的并发编程,可以按照以下步骤进行:
go
关键字启动多个 goroutines 来并行执行任务。sync.RWMutex
实现读写锁,允许多个读操作同时进行,但只允许一个写操作。sync.WaitGroup
等待一组 goroutines 完成。race detector
和 pprof
。以下是一个简单的 Go 语言并发示例,使用 goroutines 和 channels 实现生产者-消费者模式:
package main
import (
"fmt"
"sync"
)
func producer(ch chan<- int, max int) {
for i := 0; i < max; i++ {
ch <- i
}
close(ch)
}
func consumer(ch <-chan int, wg *sync.WaitGroup) {
defer wg.Done()
for num := range ch {
fmt.Println("Received:", num)
}
}
func main() {
var wg sync.WaitGroup
ch := make(chan int)
wg.Add(2)
go producer(ch, 5)
go consumer(ch, &wg)
wg.Wait()
}
在这个示例中,我们创建了一个通道 ch
,用于在生产者和消费者之间传递数据。producer
函数生成一系列整数并将其发送到通道中,然后关闭通道。consumer
函数从通道中读取数据并打印出来,直到通道被关闭。我们使用 sync.WaitGroup
来等待生产者和消费者完成它们的工作。