Sobes.tech
Junior — Middle

Чӣ гуна метавон ҳолат ва анҷоми goroutine-ро дар Go идора кард?

sobes.tech AI

Ҷавоб аз AI

Дар Го, идоракуи ҳолат ва анҷоми goroutine одатан бо истифода аз каналҳо (channels) ва контекстҳо (context) анҷом дода мешавад.

  1. Каналҳо имкон медиҳанд, ки сигнали байни goroutine-ҳо интиқол дода шавад. Масалан, шумо метавонед канал барои огоҳ кардани зарурати анҷом додан созед:
stop := make(chan struct{})
func() {
    for {
        select {
        case <-stop:
            return // Анҷоми goroutine
        default:
            // Корро иҷро мекунад
        }
    }
}()

// Барои боздошти goroutine:
close(stop)
  1. Пакети context роҳи қулай барои идоракунии муҳлати зиндагии goroutine-ҳо пешниҳод мекунад, махсусан дар кор бо дархостҳо ё амалҳои дарозмуддат:
ctx, cancel := context.WithCancel(context.Background())
func(ctx context.Context) {
    for {
        select {
        case <-ctx.Done():
            return // Анҷоми goroutine
        default:
            // Кор
        }
    }
}(ctx)

// Барои боздошти:
cancel()

Бинобар ин, goroutine-ҳо сигналиҳоро тавассути каналҳо ё контекстҳо мешунаванд ва дар вақти гирифтани сигнали дуруст ба кор идома медиҳанд.