Sobes.tech
Junior — Middle

İşlerin eşzamanlı yürütülmesi bağlamında goroutine senkronizasyon mekanizmasının çalışma prensibini açıklayın.

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde, goroutine'ler hafif iş parçacıklarıdır ve eşzamanlı olarak çalışırlar. Goroutine'leri senkronize etmek için, ortak kaynaklara erişimi koordine eden ve yürütmeyi düzenleyen mekanizmalar kullanılır.

Ana senkronizasyon mekanizmaları:

  • Kanallar (channels): goroutine'ler arasında veri iletimi sağlar ve mesaj alışverişi yoluyla senkronizasyonu güvence altına alır.
  • Mutex'ler (sync.Mutex): paylaşılan verilere erişimi engeller ve yarış koşullarını önler.
  • WaitGroup (sync.WaitGroup): bir grup goroutine'in tamamlanmasını beklemeye olanak tanır.

Kanal ile örnek:

package main

import (
    "fmt"
)

func worker(ch chan int) {
    val := <-ch // kanaldan veri bekler
    fmt.Println("Alınan değer:", val)
}

func main() {
    ch := make(chan int)
    go worker(ch)
    ch <- 42 // kanala veri gönderir
}

Burada, kanal senkronizasyonu sağlar: worker goroutine'i, main değer gönderene kadar bekler.