Table des matières

Go lang - goroutines

Voir :

Pb sortie de main avant terminaisons des goroutines - Attendre la fin de toutes les goroutines avant de terminer le programme (la fonction main)

Voir :

Solution naïve

import (
	"runtime"
	"time"
	)
 
func wait_all_goroutines() {
	for runtime.NumGoroutine() > 1 {
		time.Sleep(500 * time.Millisecond)
	}
}
 
func main() {
	defer fmt.Println("FIN")
 
	// Last defer
	defer wait_all_goroutines()
 
	ch := make(chan int)
	go evenSum(1, 100, ch)
}

Afficher les résultats des goroutine de la plus rapide à la plus longue

Voir :

        ch1 := make(chan int)
        ch2 := make(chan int)
        go evenSum(1, 10, ch1)
        go squareSum(1, 10, ch2)
        for range 2 {
                select {
                case r1 := <-ch1:
                        fmt.Println(r1)
                case r2 := <-ch2:
                        fmt.Println(r2)
                }
        }

FIXME