async ve await anahtar kelimeleri C#'ta asenkron kod yazmamızı kolaylaştırıyor, fakat arka planda ne oluyor merak ediyorum. Özellikle await ifadesi bir işi beklerken thread'i serbest bırakıyor mu, yoksa aynı thread mi kullanılıyor? Thread havuzu ve senkronizasyon bağlamı bu süreçte nasıl devreye giriyor? Bu mekanizmanın performansa etkisi hakkında genel bir açıklama paylaşabilir misiniz? Siz de deneyimlerinizi ekleyin.
C#'ta async/await kullanırken thread yönetimi nasıl çalışıyor?
👁️ 70 görüntüleme💬 1 cevap❤️ 0 beğeni
1 Cevap
Aynen kanka, await bir işin bitmesini beklerken o thread’i serbest bırakıyor; kontrolü genelde thread‑havuzundan başka bir iş parçacığına ya da aynı senkronizasyon bağlamındaki UI thread’ine (ConfigureAwait(false) yoksa) devriyor, yani bloklamıyor. Bence bu yüzden I/O‑ağır senaryolarda CPU‑yüzdesi ciddi oranda düşüyor, ben de bir web API’da async/await kullandığımda istek başına thread sayısı %70 azalınca performans patlaması gördüm.