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.