溫馨提示×

golang控制并發數量的方法是什么

小億
131
2023-10-20 21:18:54
欄目: 編程語言

在golang中,可以使用goroutine和channel來控制并發數量。以下是一些常用的方法:

  1. 使用goroutine和WaitGroup:可以使用sync包中的WaitGroup來實現控制并發數量。創建一個WaitGroup對象,然后在每個goroutine中調用Add方法增加計數器,執行完任務后調用Done方法減少計數器。最后,可以使用Wait方法阻塞主goroutine,直到計數器歸零。
import (
    "sync"
)

func main() {
    var wg sync.WaitGroup
    maxConcurrency := 10 // 并發數量

    for i := 0; i < maxConcurrency; i++ {
        wg.Add(1)
        go func() {
            defer wg.Done()
            // 執行任務
        }()
    }

    wg.Wait()
}
  1. 使用channel和限制緩沖區大?。嚎梢允褂脦в芯彌_區的channel來控制并發數量。創建一個帶有指定緩沖區大小的channel,然后在每個goroutine中向channel發送任務。channel的緩沖區大小限制了并發數量。
func main() {
    maxConcurrency := 10 // 并發數量
    taskCh := make(chan int, maxConcurrency)

    for i := 0; i < maxConcurrency; i++ {
        go func() {
            for task := range taskCh {
                // 執行任務
            }
        }()
    }

    // 發送任務到channel
    for i := 0; i < 100; i++ {
        taskCh <- i
    }

    close(taskCh)
}

這些方法都可以有效地控制并發數量,根據實際情況選擇合適的方法。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女