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

  1. 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
  1. 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í
  1. sync.WaitGroup — pro čekání na dokončení skupiny gorutin.

  2. Systémové signály — přes balíček os/signal lze 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.