Go 語言的并發(fā)編程是其核心特性之一,它通過 goroutines 和 channels 提供了強(qiáng)大的并發(fā)支持。如果你想入門 Go 語言的并發(fā)編程,可以按照以下步驟進(jìn)行:
go
關(guān)鍵字啟動多個 goroutines 來并行執(zhí)行任務(wù)。sync.RWMutex
實現(xiàn)讀寫鎖,允許多個讀操作同時進(jìn)行,但只允許一個寫操作。sync.WaitGroup
等待一組 goroutines 完成。race detector
和 pprof
。以下是一個簡單的 Go 語言并發(fā)示例,使用 goroutines 和 channels 實現(xiàn)生產(chǎn)者-消費(fèi)者模式:
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()
}
在這個示例中,我們創(chuàng)建了一個通道 ch
,用于在生產(chǎn)者和消費(fèi)者之間傳遞數(shù)據(jù)。producer
函數(shù)生成一系列整數(shù)并將其發(fā)送到通道中,然后關(guān)閉通道。consumer
函數(shù)從通道中讀取數(shù)據(jù)并打印出來,直到通道被關(guān)閉。我們使用 sync.WaitGroup
來等待生產(chǎn)者和消費(fèi)者完成它們的工作。