Junior — Middle
Aké udalosti a signály je možné použiť na interakciu s goroutines v jazyku Go?
sobes.tech AI
Odpoveď od AI
V jazyku Go sa na komunikáciu s gorutinami používajú nasledujúce hlavné mechanizmy:
- Kanály (channels) — hlavný spôsob prenosu dát a signálov medzi gorutinami. Prostredníctvom kanálov je možné odosielať a prijímať hodnoty, čo umožňuje synchronizáciu.
ch := make(chan int)
go func() {
ch <- 42 // odoslanie hodnoty
}()
val := <-ch // prijatie hodnoty
- Kontext (context.Context) — slúži na riadenie životnosti gorutín, na zrušenie operácií a na prenos signálov zrušenia.
ctx, cancel := context.WithCancel(context.Background())
go func(ctx context.Context) {
select {
case <-ctx.Done():
// spracovanie zrušenia
}
}(ctx)
cancel() // signál zrušenia
-
sync.WaitGroup — na čakanie na dokončenie skupiny gorutín.
-
Systémové signály — cez balík
os/signalje možné zachytiť systémové signály a odoslať ich gorutinám na správne ukončenie.
Takto sú hlavné "udalosťi" pre interakciu operácie odosielania/prijímania cez kanály, zrušenie cez kontext a systémové signály.