Sobes.tech
Junior — Middle

Programlama dilinde goroutinleri yönetmek ve çalıştırmak için hangi temel yapılar kullanılır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde goroutine’leri yönetmek ve çalıştırmak için aşağıdaki temel yapılar kullanılır:

  • Goroutine başlatma: go anahtar kelimesi, bir fonksiyon çağrısının önüne konduğunda, fonksiyon ayrı bir goroutine’de çalıştırılır, örneğin:

    go fonksiyonum()
    

    Bu, fonksiyonun asenkron olarak çalışmasını sağlar.

  • Kanallar (channels): goroutine’ler arasında senkronizasyon ve veri alışverişi için kullanılır. Bir kanal şu şekilde oluşturulur:

    ch := make(chan int)
    

    Veri gönderme ve alma:

    ch <- 42      // gönderme
    val := <-ch   // alma
    

    Kanallar güvenli iletişim sağlar ve veriler hazır değilse goroutine’yi engeller.

  • sync.WaitGroup: bir grup goroutine’nin tamamlanmasını beklemek için kullanılır. Örnek:

    var wg sync.WaitGroup
    wg.Add(1)
    go func() {
        defer wg.Done()
        // goroutine işi
    }()
    wg.Wait() // tüm goroutine’lerin tamamlanmasını bekle
    
  • select: aynı anda birden fazla kanal işlemini beklemeye izin verir ve hazır olanı seçer. Örnek:

    select {
    case msg := <-ch1:
        fmt.Println("ch1’den alındı:", msg)
    case ch2 <- 42:
        fmt.Println("ch2’ye gönderildi")
    default:
        fmt.Println("Hiçbir işlem hazır değil")
    }
    

Bu yapılar, Go’da paralel yürütmeyi etkin bir şekilde başlatmaya, senkronize etmeye ve yönetmeye olanak tanır.