TGViewer
Библиотека собеса по C# | вопросы с собеседований Библиотека собеса по C# | вопросы с собеседований @csharp_interview_lib · 5.65K subscribers
Post #890 1.47K
Как реализовать «single-flight» асинхронный кэш в C#, чтобы при наплыве запросов по одному ключу выполнялась ровно одна загрузка?

Держите ConcurrentDictionary<TKey, Lazy<Task<T>>>: через GetOrAdd публикуйте один общий Lazy<Task<T>> на ключ (режим ExecutionAndPublication) и await его. При отмене/ошибке — удаляйте запись, чтобы следующая попытка перезапустила загрузку. Добавьте TTL/лимиты (например, IMemoryCache), фоновые обновления, per-request CancellationToken, не кэшируйте исключения и следите за размерами/метриками промахов. Альтернатива — пер-ключевой SemaphoreSlim/lock для объединения запросов.

Библиотека собеса по С#
  • ❤ 3
  • 😢 1
More from @csharp_interview_lib
  1. Sep 21, 2026🔍Тестовое собеседование с Senior C# разработчиком уже завтра 22 сентября (уже завтра!) в…
  2. Sep 15, 2026Когда выбирать struct/record struct вместо class? Для маленьких, неизменяемых и часто копи…
  3. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  4. Sep 7, 2026⚡️⚡️Актуальные темы .NET на DotNext 2026 В .NET одновременно происходит много интересного:…
  5. Aug 4, 2026Долгоживущий .NET-сервис постепенно “распухает” по памяти без явных LOH-пиков. В дампе вид…
  6. Aug 4, 2026👅 Самое сложное — выбрать не курс, а направление Сегодня хочется разобраться в AI-агентах…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →