filmov
tv
Евгений Пешков — Многопоточность в .NET: когда производительности не хватает
Показать описание
— —
Ошибки и проблемы использования многопоточности в .NET.
Платформа .NET предоставляет множество готовых примитивов синхронизации и потокобезопасных коллекций. Если при разработке приложения нужно реализовать, например, потокобезопасный кэш или очередь запросов — обычно используются эти готовые решения, иногда сразу несколько. В отдельных случаях это приводит к проблемам с производительностью: долгим ожиданием на блокировках, избыточному потреблению памяти и долгим сборкам мусора.
Эти проблемы можно решить, если учесть, что стандартные решения сделаны достаточно общими — они могут иметь избыточный в наших сценариях оверхед. Соответственно, можно написать, например, собственную эффективную потокобезопасную коллекцию для конкретного случая.
В докладе рассмотрим несколько примеров, когда использование средств из стандартной библиотеки .NET (Task.Delay, SemaphoreSlim, ConcurrentDictionary) привело к просадкам производительности, и поговорим о решениях, заточенных под конкретные задачи и лишённых этих недостатков. Также заглянем в internal-часть дотнета и посмотрим на использующиеся там подходы.
Ошибки и проблемы использования многопоточности в .NET.
Платформа .NET предоставляет множество готовых примитивов синхронизации и потокобезопасных коллекций. Если при разработке приложения нужно реализовать, например, потокобезопасный кэш или очередь запросов — обычно используются эти готовые решения, иногда сразу несколько. В отдельных случаях это приводит к проблемам с производительностью: долгим ожиданием на блокировках, избыточному потреблению памяти и долгим сборкам мусора.
Эти проблемы можно решить, если учесть, что стандартные решения сделаны достаточно общими — они могут иметь избыточный в наших сценариях оверхед. Соответственно, можно написать, например, собственную эффективную потокобезопасную коллекцию для конкретного случая.
В докладе рассмотрим несколько примеров, когда использование средств из стандартной библиотеки .NET (Task.Delay, SemaphoreSlim, ConcurrentDictionary) привело к просадкам производительности, и поговорим о решениях, заточенных под конкретные задачи и лишённых этих недостатков. Также заглянем в internal-часть дотнета и посмотрим на использующиеся там подходы.
Евгений Пешков — Многопоточность в .NET: когда производительности не хватает...
Многопоточность в .NET, когда не хватает производительности (Евгений Пешков)...
Евгений Пешков «ConcurrencyToolkit»
2.4. Евгений Пешков. Как мы пишем понятный коДДД
Евгений Пешков — .NET: Лечение зависимостей
Евгений Пешков, «Bounded contexts будь проще»
Евгений Пешков — Особые исключения в .NET
ArchDays 2019 • Как мы пишем понятный коДДД • Евгений Пешков
Евгений Пешков. Когнитивные искажения
Евгений Пешков — Клиентский HTTP в .NET: От WebRequest до SocketsHttpHandler...
Евгений Пешков «Клиентский HTTP в .NET: От WebRequest до SocketsHttpHandler»...
Многопоточность - Основные понятия и принципы
Евгений Пешков «Убийцы производительности»
Евгений Пешков «.NET: Лечение зависимостей»
Лекция 10. Многопоточность
Что такое многопоточность/multithreading? Введение в процессы и потоки...
Евгений Пешков. Убийцы производительности: логеры
#18 Многопоточность - Thread, ThreadPool, Task. Ответ на вопрос собеседования C# / .Net...
Как работает многопоточность и синхронизация потоков / Monitor (ДУШевный пример)...
#11: Безопасная многопоточность в Rust, возможно ли такое в .Net и не только...
Примитивы многопоточности .Net // Курс «C# Developer. Professional»
16.1 Введение в многопоточность. Класс Thread
Дмитрий Иванов — Многопоточность в .NET: Дьявол в деталях...
Р.В.Шамин. Лекция 'Программирование на языке C#' № 7: 'Многопоточность и анимация&apo...
Комментарии