利用 golang 實現并發編程:創建 goroutine:使用 go 關鍵字創建輕量級線程 goroutine。使用通道:通道是 goroutine 間通信的數據結構,可發送和接收值。實戰案例:并行計算:創建 goroutine 數組并行計算數字和,顯著提升計算性能。
利用 Golang 函數實現并發編程
在 Golang 中,并發性是通過 goroutine 和通道實現的。goroutine 是輕量級的線程,通道是用于 goroutine 之間通信的機制。
創建 goroutine
使用 go
關鍵字創建 goroutine。這將創建一個新的goroutine,并同時執行函數。
func main() { // 創建一個打印"Hello, world!"的goroutine go fmt.Println("Hello, world!") }
登錄后復制
通道
通道是一種用于 goroutine 之間通信的數據結構。它可以發送和接收值。
// 創建一個發送字符串到通道的goroutine func send(ch chan string) { ch <- "Hello, channel!" } // 創建一個接收通道中字符串的goroutine func receive(ch chan string) { fmt.Println(<-ch) }
登錄后復制
實戰案例:并行計算
我們使用并發性來并行計算一組數字的和。我們創建一個 goroutine 數組,每個 goroutine 負責計算數組一部分的和。
func main() { // 創建要計算和的數組 nums := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} // 創建goroutine通道 var ch = make(chan int) // 創建goroutine數組,每個goroutine負責計算數組一部分的和 for i := 0; i < len(nums); i++ { go func(i int) { sum := 0 for j := i; j < len(nums); j++ { sum += nums[j] } ch <- sum }(i) } // 從goroutine接收結果并求和 totalSum := 0 for i := 0; i < len(nums); i++ { totalSum += <-ch } fmt.Println("Total sum:", totalSum) }
登錄后復制
通過使用并發性,我們可以顯著提高計算和的性能。