Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
C# Async'te Exception: AggregateException ve WhenAll'daki Hatalar
Async method'daki exception task'ın içine konur ve await anında orijinal tipiyle fırlar. Parametre kontrolünü çağrı anında fırlatmak, Wait/GetResult/await farkı, WhenAll'da bütün hatalara ve kısmi sonuçlara ulaşmak, iki overload'da farklı çıkan hata sırası, AggregateException.Handle ve gözlenmeyen task exception'ları.
C# async/await Nasıl Çalışır: State Machine ve Continuation
await her zaman beklemez: bitmiş bir task'ta kod aynı thread'de devam eder. async kelimesinin aslında ne yaptığı, GetAwaiter/IsCompleted/OnCompleted adımları, elle yazılmış çalışan bir state machine, reflection ile derleyicinin ürettiği tipe bakmak (Debug'da class, Release'de struct), continuation'ın hangi thread'de çalıştığı ve awaitable pattern.
C# Task ve Task<T>: Sıcak Başlayan Bir Söz
Async method çağrıldığı anda çalışmaya başlar; await bir işi başlatmaz, sonucunu bekler. Task'ın yaşam döngüsü ve Status değerleri, Task.FromResult ve TaskCompletionSource ile task üretmek, aynı task'ı iki kez await etmek, işleri önce başlatıp sonra beklemek ve Task.Factory.StartNew'un Task<Task> tuzağı.
C# Thread ve ThreadPool: APM ve EAP'den TPL'e Async'in Kısa Tarihi
Foreground ve background thread farkı, Thread class'ının sonuç ve hata taşıyamaması, 1000 thread ile thread pool'un gerçek ölçümü. Ardından .NET'in async yolculuğu: APM'in Begin/End çifti, EAP'nin Completed event'i, TPL'in Task'ı ve C# 5 ile gelen async/await.
C# Async Programlama Neden Var: Bloklamak, I/O ve Ölçek
Aynı 100 stok sorgusu async ile bir saniyede, thread'i bekleten kodla 8-9 saniyede bitiyor. I/O-bound ve CPU-bound iş farkı, bloklamanın UI'da ve sunucuda bedeli, thread pool starvation, async'in hız değil kapasite kazandırması ve sahte async tuzağı.
Dapper ile Async ve Connection Yönetimi: CancellationToken, Pooling ve DI
Dapper'da CancellationToken'ın neden yalnızca CommandDefinition ile gittiğini, SQLite'ta async'in aslında senkron çalıştığını, connection pooling'i, tek connection paylaşmanın neden patladığını ve ASP.NET Core'da connection factory pattern'ini gerçek çıktılarla görüyoruz.
JavaScript İleri Asenkron Pattern'lar: Promise.all Ailesi, İptal, Retry ve Timeout
Promise.all, allSettled, any ve race farkını, ES2024'ün Promise.withResolvers'ını, ES2025'in Promise.try'ını, kendi fonksiyonunda AbortSignal desteğini, retry, timeout ve concurrency sınırlamayı kodla görüyoruz.