Les coroutines sont utilisées pour la communication dans Go. Les canaux sont un mécanisme de base pour envoyer et recevoir des données entre coroutines. Les coroutines peuvent envoyer ou recevoir des données depuis un canal en utilisant les opérateurs d'envoi (<-) et de réception (<-). Cas pratique : Sommation parallèle, démontrant l'utilisation de coroutines et de canaux pour calculer la somme de nombres en parallèle, en envoyant la somme partielle au canal, puis en la recevant et en l'imprimant par la coroutine principale.
Utilisez les coroutines Golang pour la communication
Dans le langage Go, les coroutines offrent un moyen léger et efficace de programmation simultanée. Ils permettent d'exécuter plusieurs tâches simultanément dans le contexte d'un seul thread, améliorant ainsi les performances des applications. La communication entre les coroutines est cruciale pour la coordination des tâches et le partage des données.
Canaux
Dans Go, les canaux sont un mécanisme de base pour envoyer et recevoir des données entre coroutines. Un canal est une file d'attente non tamponnée ou tamponnée utilisée pour fournir des valeurs. Pour créer un canal, vous pouvez utiliser la syntaxe suivante :
ch := make(chan T)
où T
est le type d'élément dans le canal. T
是通道中的元素类型。
发送数据到通道
要向通道发送数据,可以使用 <-
操作符:
ch <- data
从通道接收数据
要从通道接收数据,可以使用 <-
操作符:
data := <-ch
实战案例:并行求和
为了演示协程通信,让我们编写一段程序来使用协程并行求和一组数字:
package main import ( "fmt" "sync" ) func sum(a []int, ch chan int) { sum := 0 for _, v := range a { sum += v } ch <- sum } func main() { a := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} ch := make(chan int) var wg sync.WaitGroup for i := 0; i < 5; i++ { start := i * 2 end := start + 2 wg.Add(1) go sum(a[start:end], ch) } go func() { for i := 0; i < 5; i++ { total := <-ch fmt.Println("Partial sum:", total) } wg.Done() }() wg.Wait() }
在这个示例中,我们创建了 5 个协程,每个协程使用通道 ch
<-
: 🎜rrreee🎜🎜Recevoir des données du canal🎜🎜🎜Pour recevoir des données de le canal, vous pouvez utiliser <code> 🎜Dans cet exemple, nous créons 5 coroutines, chaque coroutine utilise le canal <code>ch
pour calculer une somme partielle. La coroutine principale se charge de recevoir ces sommes partielles et de les imprimer sur la console. 🎜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!