Sobes.tech
Junior — Middle

Proqramlaşdırma dilində goroutinləri idarə etmək və icra etmək üçün əsas quruluşlar hansılardır?

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində goroutine-ləri idarə etmək və icra etmək üçün aşağıdakı əsas quruluşlar istifadə olunur:

  • Goroutine-ın başlaması: go açar sözü funksiyanı çağırmadan əvvəl yazılır və onu ayrı bir goroutine-də icra edir, məsələn:

    go mənimFəaliyyətim()
    

    Bu, funksiyanın asinxron şəkildə icra olunmasına imkan verir.

  • Kanal (channels): goroutine-lər arasında sinxronizasiya və məlumat mübadiləsi üçün istifadə olunur. Kanal belə yaradılır:

    ch := make(chan int)
    

    Məlumat göndərmə və alma:

    ch <- 42      // göndərmə
    val := <-ch   // alma
    

    Kanallar təhlükəsiz kommunikasiya təmin edir və məlumatlar hazır deyilsə, goroutine-i bloklayır.

  • sync.WaitGroup: bir qrup goroutine-in tamamlanmasını gözləmək üçün istifadə olunur. Nümunə:

    var wg sync.WaitGroup
    wg.Add(1)
    go func() {
        defer wg.Done()
        // goroutine işi
    }()
    wg.Wait() // bütün goroutine-lərin tamamlanmasını gözləyir
    
  • select: eyni zamanda bir neçə kanal əməliyyatını gözləməyə və hazır olanı seçməyə imkan verir. Nümunə:

    select {
    case msg := <-ch1:
        fmt.Println("ch1-dən alınmış:", msg)
    case ch2 <- 42:
        fmt.Println("ch2-ə göndərildi")
    default:
        fmt.Println("Heç bir əməliyyat hazır deyil")
    }
    

Bu quruluşlar Go-da paralel icraatı səmərəli başlatmağa, sinxronizasiya etməyə və idarə etməyə imkan verir.