Package context
Contexte
Section intitulée « Contexte »Le package context fournit une manière standard de transporter des délais, des signaux d’annulation et des valeurs limitées à la requête à travers les frontières d’API. Il est particulièrement utile pour annuler des goroutines.
Utiliser context.WithCancel pour annuler une goroutine.
Code exemple
Section intitulée « Code exemple »package main
import ( "context" "fmt" "time")
func worker(ctx context.Context, id int) { for { select { case <-ctx.Done(): fmt.Printf("Worker %d annulé\n", id) return default: fmt.Printf("Worker %d travaille\n", id) time.Sleep(500 * time.Millisecond) } }}
func main() { ctx, cancel := context.WithCancel(context.Background()) go worker(ctx, 1) go worker(ctx, 2)
time.Sleep(2 * time.Second) cancel() // arrêter tous les workers time.Sleep(500 * time.Millisecond)}Sortie (exemple)
Section intitulée « Sortie (exemple) »Worker 2 travailleWorker 1 travailleWorker 1 travailleWorker 2 travailleWorker 1 travailleWorker 2 travailleWorker 2 annuléWorker 1 annulé