Comment utiliser les fonctions de concurrence en langage Go pour implémenter la répartition des tâches du calcul parallèle ?
Introduction :
Dans le domaine de l'informatique, la répartition des tâches est une technologie informatique parallèle courante. La répartition des tâches permet à un programme d'exécuter une tâche volumineuse en parallèle en la divisant en plusieurs tâches plus petites. Le langage Go fournit de puissantes fonctions de concurrence pour mettre en œuvre la répartition des tâches, ce qui nous permet d'utiliser pleinement les capacités des processeurs multicœurs et d'accélérer l'exécution des programmes.
package main import ( "fmt" "sync" ) func main() { // 定义一个任务切片 tasks := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} // 创建一个用于接收结果的channel results := make(chan int, len(tasks)) // 创建一个等待组 wg := sync.WaitGroup{} // 遍历任务切片,为每个任务创建一个goroutine进行计算 for _, task := range tasks { wg.Add(1) go func(task int) { defer wg.Done() // 执行具体的计算任务 result := compute(task) // 将计算结果发送到结果channel results <- result }(task) } // 等待所有任务完成 wg.Wait() // 关闭结果channel close(results) // 输出所有计算结果 for result := range results { fmt.Println(result) } } func compute(task int) int { // 模拟耗时的计算任务 return task * task }
defer wg.Done()
标记任务计算完成,并将计算结果发送到结果channel中。最后我们调用wg.Wait()
等待所有任务完成,然后关闭结果channel。最后使用for range
pour lire et afficher tous les résultats de calcul à partir du canal de résultats. Résumé :
En utilisant des fonctions concurrentes dans le langage Go, nous pouvons facilement implémenter la répartition des tâches et le calcul parallèle. En décomposant les tâches volumineuses en plusieurs petites tâches et en utilisant goroutine pour le calcul parallèle, nous pouvons mieux utiliser les capacités des processeurs multicœurs et améliorer l'efficacité de l'exécution des programmes. J'espère que cet article pourra vous aider à comprendre comment utiliser les fonctions de concurrence dans le langage Go pour implémenter la répartition des tâches et le calcul parallèle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!