溫馨提示×

怎么使用Go協(xié)程并發(fā)遍歷數(shù)組或切片

go
小億
127
2024-04-02 19:31:06
欄目: 編程語言

在Go語言中,可以使用協(xié)程(goroutine)來并發(fā)遍歷數(shù)組或切片。下面是一個簡單的示例代碼:

package main

import (
	"fmt"
	"runtime"
)

func main() {
	runtime.GOMAXPROCS(2) // 設(shè)置使用的CPU核心數(shù)

	nums := []int{1, 2, 3, 4, 5}

	// 使用協(xié)程并發(fā)遍歷數(shù)組
	for i := 0; i < len(nums); i++ {
		go func(idx int) {
			fmt.Println(nums[idx])
		}(i)
	}

	// 阻塞主協(xié)程,避免程序提前退出
	fmt.Scanln()
}

在上面的代碼中,我們使用runtime.GOMAXPROCS(2)來設(shè)置程序使用的CPU核心數(shù)為2,然后定義了一個包含一些整數(shù)的切片nums。接著我們通過一個for循環(huán)遍歷數(shù)組nums,在每一次遍歷中使用go func()創(chuàng)建一個新的協(xié)程,每個協(xié)程打印數(shù)組中的某個元素。

需要注意的是,協(xié)程可能會以不同的順序執(zhí)行,所以打印的結(jié)果可能不是按照數(shù)組的順序來的。此外,為了防止主協(xié)程提前退出,我們通過fmt.Scanln()來阻塞主協(xié)程。

0