中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

Golang并發編程:使用Go WaitGroup實現任務調度器

小云
85
2023-10-19 17:52:34
欄目: 編程語言

任務調度器是一種常見的并發編程模式,它用于同時執行多個任務并等待所有任務完成后再繼續執行其他操作。在Golang中,可以使用sync.WaitGroup實現任務調度器。

sync.WaitGroup是Golang提供的一個并發原語,用于等待一組goroutine完成。它提供了三個方法:Add()Done()Wait()

下面是一個使用sync.WaitGroup實現任務調度器的示例代碼:

package main
import (
"fmt"
"sync"
)
func main() {
// 創建一個WaitGroup對象
var wg sync.WaitGroup
// 設置任務的數量
numTasks := 10
wg.Add(numTasks)
// 并發執行任務
for i := 0; i < numTasks; i++ {
go func(taskId int) {
// 執行任務
fmt.Printf("Task %d is running\n", taskId)
// 標記任務完成
wg.Done()
}(i)
}
// 等待所有任務完成
wg.Wait()
// 所有任務完成后執行其他操作
fmt.Println("All tasks have been completed")
}

在上面的代碼中,首先創建了一個sync.WaitGroup對象。然后,通過調用Add()方法設置了要執行的任務數量。接下來,通過循環并發執行任務,并在每個任務完成時調用Done()方法標記任務完成。最后,調用Wait()方法等待所有任務完成。

運行上述代碼,將會輸出類似以下內容:

Task 0 is running
Task 1 is running
Task 2 is running
Task 3 is running
Task 4 is running
Task 5 is running
Task 6 is running
Task 7 is running
Task 8 is running
Task 9 is running
All tasks have been completed

可以看到,所有任務完成后,程序繼續執行其他操作。

使用sync.WaitGroup實現任務調度器可以方便地管理多個并發任務,并等待它們全部完成。這對于實現并行計算、批量處理等場景非常有用。

0
湘西| 金塔县| 兰溪市| 双辽市| 兴和县| 积石山| 山东省| 额尔古纳市| 灵宝市| 沈丘县| 岱山县| 互助| 靖州| 鹰潭市| 榆林市| 靖安县| 兴城市| 岳阳市| 碌曲县| 武平县| 治县。| 泸定县| 隆德县| 滦平县| 西乌珠穆沁旗| 民乐县| 谢通门县| 镇沅| 屯门区| 双辽市| 广宗县| 吉水县| 三明市| 迁安市| 荔波县| 眉山市| 龙南县| 乌兰察布市| 江川县| 资源县| 五寨县|