Junior — Middle
Cari kontekstdə işləməni dayandırmaq üçün sorğu alındıqda, proqramı necə bitirmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
Go tilida, to‘xtash so‘rovi bo‘yicha dastur to‘g‘ri yakunlanishi uchun odatda bekor qilish bilan kontekst (context.Context) ishlatiladi. Bu goroutinlarga bekor qilish signalini yuborish va ularni to‘g‘ri yakunlash imkonini beradi.
Misol:
package main
import (
"context"
"fmt"
"os"
"os/signal"
"syscall"
"time"
)
func main() {
ctx, cancel := context.WithCancel(context.Background())
// Tizim signallarini kuzatish va to‘xtatish
sigs := make(chan os.Signal, 1)
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
go func() {
<-sigs
fmt.Println("To‘xtash signali olindi")
cancel() // kontekstga bekor qilish signalini yuborish
}()
// Kontekstni tinglaydigan ishni boshlash
work(ctx)
}
func work(ctx context.Context) {
for {
select {
case <-ctx.Done():
fmt.Println("Ishni yakunlash")
return
default:
fmt.Println("Ishlamoqda...")
time.Sleep(1 * time.Second)
}
}
}
Shu tarzda, operatsion tizim signali olinsa, dastur barcha jarayonlarni to‘g‘ri yakunlaydi va chiqadi.