9
รูปแบบการล็อกสำหรับการใช้. NET MemoryCache อย่างเหมาะสม
ฉันถือว่ารหัสนี้มีปัญหาการเกิดพร้อมกัน: const string CacheKey = "CacheKey"; static string GetCachedData() { string expensiveString =null; if (MemoryCache.Default.Contains(CacheKey)) { expensiveString = MemoryCache.Default[CacheKey] as string; } else { CacheItemPolicy cip = new CacheItemPolicy() { AbsoluteExpiration = new DateTimeOffset(DateTime.Now.AddMinutes(20)) }; expensiveString = SomeHeavyAndExpensiveCalculation(); MemoryCache.Default.Set(CacheKey, expensiveString, cip); } return expensiveString; } สาเหตุของปัญหาการเกิดพร้อมกันคือหลายเธรดสามารถรับคีย์ว่างจากนั้นพยายามแทรกข้อมูลลงในแคช วิธีใดเป็นวิธีที่สั้นและสะอาดที่สุดในการพิสูจน์รหัสพร้อมกันนี้ ฉันชอบทำตามรูปแบบที่ดีในโค้ดที่เกี่ยวข้องกับแคชของฉัน ลิงก์ไปยังบทความออนไลน์จะช่วยได้มาก UPDATE: …