Junior — Middle
Jaké události a signály lze použít k interakci s goroutines v jazyce Go?
sobes.tech AI
Odpověď od AI
V jazyce Go se pro komunikaci s gorutinami používají následující hlavní mechanismy:
- Kanály (channels) — hlavní způsob přenosu dat a signálů mezi gorutinami. Přes kanály lze odesílat a přijímat hodnoty, což umožňuje synchronizaci.
ch := make(chan int)
go func() {
ch <- 42 // odeslání hodnoty
}()
val := <-ch // přijetí hodnoty
- Kontext (context.Context) — slouží k řízení životnosti gorutin, k rušení operací a k přenosu signálů o zrušení.
ctx, cancel := context.WithCancel(context.Background())
go func(ctx context.Context) {
select {
case <-ctx.Done():
// zpracování zrušení
}
}(ctx)
cancel() // signál zrušení
-
sync.WaitGroup — pro čekání na dokončení skupiny gorutin.
-
Systémové signály — přes balíček
os/signallze zachytit systémové signály a předat je gorutinám pro správné ukončení.
Tímto způsobem jsou hlavní "události" pro interakci operace odesílání/přijímání přes kanály, zrušení přes kontext a systémové signály.