Ошибки и проблемы использования многопоточности в .NET. Платформа .NET предоставляет множество готовых примитивов синхронизации и потокобезопасных коллекций. Если при разработке приложения нужно реализовать, например, потокобезопасный кэш или очередь запросов — обычно используются эти готовые решения, иногда сразу несколько. В отдельных случаях это приводит к проблемам с производительностью: долгим ожиданием на блокировках, избыточному потреблению памяти и долгим сборкам мусора. Эти проблемы можно решить, если учесть, что стандартные решения сделаны достаточно общими — они могут иметь избыточный в наших сценариях оверхед. Соответственно, можно написать, например, собственную эффективную потокобезопасную коллекцию для конкретного случая. В докладе рассмотрим несколько примеров, когда использование средств из стандартной библиотеки .NET (Task.Delay, SemaphoreSlim, ConcurrentDictionary) привело к просадкам производительности, и поговорим о решениях, заточенных под конкретные задачи и лишённых этих недостатков. Также заглянем в internal-часть дотнета и посмотрим на использующиеся там подходы.
During this talk, we'll cover the theory and practical implementation behind the most common patterns in modern multi-threaded programming. How our everyday libraries and frameworks optimize the use …
Мы поговорим о том, как в Ruby работают с параллелизмом и конкурентностью: о давно известных вещах (процессы и потоки) и о новых (ракторы и асинхронные файберы).
Amongst all the platforms for app development, the web is arguably the only one that does not make good use of threading. On the web, the main thread has a lot of responsibilities, and we keep adding…