Özet - sync paketi
- Go kursu
- Orta seviye
- Ders 24/80
- 4 dk
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
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
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
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
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
var mu sync.Mutex
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
mu.____()
n++
mu.Unlock()
}()
wg.Wait()
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 |