Aller au contenu

Synchronisation par canaux

Vous pouvez utiliser les canaux pour synchroniser l’exécution entre goroutines. Une réception bloquante peut attendre qu’une goroutine ait terminé.

Utiliser un canal pour attendre qu’une goroutine ait fini son travail.

package main
import (
"fmt"
"time"
)
func travailleur(fini chan bool) {
fmt.Print("travaille...")
time.Sleep(1 * time.Second)
fmt.Println("terminé")
fini <- true
}
func main() {
fini := make(chan bool)
go travailleur(fini)
<-fini // attend
}
Fenêtre de terminal
travaille...terminé