CodeBlanks Logo Icon CodeBlanks

Özet - sync paketi

Mutex ve WaitGroup'ı birleştirerek paralel sayaç yazarsın.

Özet - sync paketi

Bu bölümde sync paketini öğrendin:

  • Mutex ile paylaşılan veriye özel erişim
  • RWMutex ile çok okuyucu tek yazıcı
  • WaitGroup ile goroutine bekleme
  • Önce ile bir kez çalıştırma ve Pool ile geri dönüşüm

Şimdi bunları birleştirerek paralel sayaç yazacaksın: Mutex ile koru, WaitGroup ile bekle.

Uygulama Paralel sayaç

main içine bir sync.Mutex tanımı ve fmt.Println ile sayaç tamam yazdır.

Başlangıç kodu

main.go
package main

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import (
    "fmt"
    "sync"
)

func main() {
    var mu sync.Mutex
    mu.Lock()
    fmt.Println("sayaç tamam")
    mu.Unlock()
}

Beklenen çıktı

sayaç tamam

Uygulama Sync çıktısı

main içine fmt.Println ile sync ready yazdır.

Başlangıç kodu

main.go
package main

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import "fmt"

func main() {
    fmt.Println("sync ready")
}

Beklenen çıktı

sync ready

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Mutex ve WaitGroup

Soru
var mu sync.Mutex
var wg sync.WaitGroup
wg.Add(1)
go func() {
    defer wg.Done()
    mu.____()
    n++
    mu.Unlock()
}()
wg.Wait()
Cevap
var mu sync.Mutex
var wg sync.WaitGroup
wg.Add(1)
go func() {
    defer wg.Done()
    mu.Lock()
    n++
    mu.Unlock()
}()
wg.Wait()

Açıklama: Done defer ile, Lock koruma içindir.

2 Bölüm kavramlarını eşleştir

Kavram Anlamı
Mutex Özel erişim
RWMutex Oku-yaz
WaitGroup Bekleme
Önce Bir kez

Orta seviye bölümündeki tüm dersler