CodeBlanks Logo Icon CodeBlanks

Özet - Concurrency desenleri

Mutex, Channel ve rate limiter'ı birleştirerek bir iş kuyruğu yazarsın.

Özet - Concurrency desenleri

Bu grupta eşzamanlılık desenlerini gördün: Mutex ile karşılıklı dışlama, Semaphore ile sınırlandırma, Channel ile producer-consumer, rate limiter ile istek sınırı ve circuit breaker ile hata izolasyonu.

Bu ders, üçünü birleştiren küçük bir görev içerir: bir Channel'a değer üretip for döngüsüyle toplayacaksın. Bu kalıp, eşzamanlılık desenlerinin temelini bir araya getirir.

Uygulama Özet: Channel ile değer topla

main fonksiyonunu runBlocking ile aç. val ch = Channel<Int>(3) oluştur; 10, 20, 30 gönder, close() çağır. var sum = 0 başlat ve for (v in ch) sum += v ile topla, println(sum) yazdır.

Başlangıç kodu

Main.kt
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.runBlocking

// main'i runBlocking ile aç
// üç bufferlı kanal oluştur, üç değer gönder, kapat, for ile topla ve yazdır

Örnek çözüm

Main.kt
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.runBlocking

fun main() = runBlocking {
    val ch = Channel<Int>(3)
    ch.send(10)
    ch.send(20)
    ch.send(30)
    ch.close()
    var sum = 0
    for (v in ch) sum += v
    println(sum)
}

Beklenen çıktı

60

Soru ve cevaplar

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

1 Bir kod bloğuna yalnız bir coroutine girmesini sağlayan araç hangisidir?

  • Channel
  • Semaphore
  • Mutex Doğru cevap
  • RateLimiter

Açıklama: Mutex tek coroutine erişimi sağlar.

2 Concurrency araçlarını eşle

Kavram Anlamı
Mutex Karşılıklı dışlama
Semaphore Sınırlı paralellik
Channel Producer-consumer
CircuitBreaker Hata izolasyonu

3 withLock çağrısını tamamla

Soru
val m = Mutex()
m.____ { println("ok") }
Cevap
val m = Mutex()
m.withLock { println("ok") }

Açıklama: withLock kilit alıp bırakır.

İleri seviye bölümündeki tüm dersler