Блокировка свободного стека и очереди в C#
-
23-08-2019 - |
Вопрос
Кто-нибудь знает, есть ли какие-либо библиотеки контейнеров без блокировки для .NET?
Предпочтительно что-то, что доказало свою эффективность и работает быстрее, чем синхронизированные оболочки, которые есть в .NET.
Я нашел несколько статей в .NET, но ни в одной из них не указаны какие-либо тесты скорости, и они не внушают особой уверенности в своей надежности.
Спасибо
Решение
Поздно, но лучше, чем никогда. Я решил добавить в этот список статьи Джулиана Бакнолла.
Но показателей производительности у него нет.В моем тестировании его структур список хорошо масштабировался по сравнению с блокировкой (очень низкое использование ядра по сравнению с ReaderWriterLock).
В его блоге есть серия статей о структурах без блокировок в C#.
Другие советы
Вы имеете в виду классы контейнеров, существующие в платформе PFX (Parallels для .NET), ConcurrentQueue и ConcurrentStack?
Ничего не зная об этом, я наткнулся на одну библиотеку. здесь.
Хотя, вероятно, это не совсем то, что вы ищете, по крайней мере, на StackOverflow есть реализация и обсуждение заблокировать структуру свободной очереди на C# здесь.Прохождение процесса проверки кода StackOverflow может дать некоторую уверенность в его безопасности или предоставить информацию о том, как самостоятельно создавать контейнеры без блокировки.
У структур данных без блокировки будут проблемы, пока они не изменят CLR с беспорядком, вызванным моделями памяти, см. спецификацию CLI.
Программирование без блокировок достаточно сложно, поэтому вам не следует беспокоиться об этом на уровне коллекции (контейнера), кстати.Верно для любого языка..