在 Go 中管理並發涉及使用 goroutine(並發執行單元)、通道(資料傳輸機制)和等待群組(同步機制)。透過建立 goroutine 並利用通道來安全地傳輸數據,開發者可以同時執行多個任務。等待群組允許等待 goroutine 完成其任務。這些機制的組合使 Go 應用程式能夠高效、響應迅速地處理並發。
簡介
並發是一個重要的程式設計概念,它允許同時執行多個任務,從而提高效率和回應能力。在 Go 中,並發可以透過 goroutine 來實現,goroutine 是一種輕量級的線程。
Goroutine
Goroutine 是 Go 中的並發執行單元。它們是 Go 運行時自動調度和調度的。建立一個新 goroutine 的語法如下:
go func() { // goroutine 的代码在此处执行 }
通道(Channel)
通道是一種通訊機制,允許 goroutine 之間安全可靠地傳輸資料。語法如下:
ch := make(chan Type, bufferSize)
其中 Type
是通道傳輸的資料類型,bufferSize
是通道的緩衝容量。
等待群組(WaitGroup)
等待群組是 Go 中的同步機制,它允許等待多個 goroutine 完成各自的任務。語法如下:
var wg sync.WaitGroup
實戰案例:並發Web 伺服器
以下是使用並發建立Web 伺服器的簡單範例:
// demo.go package main import ( "log" "net/http" "sync" ) var wg sync.WaitGroup func main() { // 创建一个通道来接收 HTTP 请求 reqs := make(chan *http.Request) // 创建一个 goroutine 来处理请求 wg.Add(1) go func() { defer wg.Done() for req := range reqs { // 处理请求... } }() // 创建 HTTP 服务器 srv := &http.Server{ Addr: ":8080", Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { reqs <- r }), } // 运行服务器 log.Fatal(srv.ListenAndServe()) }
#結論
透過使用goroutine、通道和等待群組,可以在Go 中輕鬆管理並發。這使開發者能夠創建高效、響應迅速的應用程式。
以上是如何在 Golang 中管理並發?的詳細內容。更多資訊請關注PHP中文網其他相關文章!