Özet - Concurrency desenleri
- Kotlin kursu
- İleri seviye
- Ders 72/83
- 5 dk
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
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
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
val m = Mutex()
m.____ { println("ok") }
val m = Mutex()
m.withLock { println("ok") }
Açıklama: withLock kilit alıp bırakır.