Aşağıdaki senaryoyu düşünün.NET Kuvvet yöntemi ertelenmiş yürütme
Birden çok iş parçacığı bu yöntem veri almak için bazı ağır işlemlerini yaparConcurrentDictionary<string, string> dic = CachedData.GetorAdd(key, HeavyDataLoadMethod())
çağıran bir yöntemle bu değişkeni erişmek
private static ConcurrentDictionary<string, ConcurrentDictionary<string, string>> CachedData;
private ConcurrentDictionary<string, string> HeavyDataLoadMethod()
{
var data = new ConcurrentDictionary<string,string>(SomeLoad());
foreach (var item in OtherLoad())
//Operations on data
return data;
}
GetorAdd
HeavyDataLoadMethod
, gerekli olmasa bile çalıştırılır.
Bu durumda ertelenmiş yürütme avantajından yararlanmak için bir yol olup olmadığını ve HeavyDataLoadMethod
ertelendi, bu yüzden gerçekten gerekli olana kadar yürütülür değil mi diye merak ediyordum.
(Evet, bu bir containsKey ile kontrol ve unutun kadar basittir biliyorum ama bu yaklaşım merak ediyorum) yerine doğrudan işlev çağrısının, bir temsilci geçebilir
Yöntemin aşırı yüklenmesine dikkat ettiğiniz için, sadece ihtiyaç duyulan şey –