Sobes.tech
Junior — Middle

Kako upravljati stanjem i završetkom goroutine u Go?

sobes.tech АИ

Одговор од АИ

U Go, upravljanje stanja i završetak goroutine obično se vrši pomoću kanala (channels) i konteksta (context).

  1. Kanali omogućavaju prenos signala između goroutine-a. Na primer, možete kreirati kanal za obaveštavanje o potrebi za završetkom:
stop := make(chan struct{})
func() {
    for {
        select {
        case <-stop:
            return // Završava goroutine
        default:
            // Obavlja posao
        }
    }
}()

// Za zaustavljanje goroutine-a:
close(stop)
  1. Paket context pruža zgodan način za upravljanje vremenom trajanja goroutine-a, posebno pri radu sa zahtevima ili dugotrajnim operacijama:
ctx, cancel := context.WithCancel(context.Background())
func(ctx context.Context) {
    for {
        select {
        case <-ctx.Done():
            return // Završava goroutine
        default:
            // Rad
        }
    }
}(ctx)

// Za zaustavljanje:
cancel()

Na ovaj način, goroutine-ovi slušaju signale putem kanala ili konteksta i pravilno završavaju rad kada prime signal.