Sobes.tech
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:

  1. 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
  1. 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
  1. sync.WaitGroup — na čakanie na dokončenie skupiny gorutín.

  2. Systémové signály — cez balík os/signal je 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.