Блокировка свободного стека и очереди в С#
Кто-нибудь знает, существуют ли какие-либо блокированные библиотеки контейнеров для .NET?
Предпочтительно, что доказано, что оно работает и работает быстрее, чем синхронизированные оболочки, которые у нас есть в .NET.
Я нашел несколько статей на .NET, но ни один из них не указывает скорость бенчмаркинга и не внушает уверенности в их надежности.
Спасибо
Ответы
Ответ 1
Поздно, но лучше, чем никогда, я думал, что буду добавлять статьи Джулиана Бакналла в этот список.
Но у него нет номеров производительности. В моем тестировании его структур список хорошо масштабировался по сравнению с блокировкой (очень низкое использование ядра по сравнению с ReaderWriterLock).
В его блоге есть серия статей о структурах, свободных от блокировок, на С#.
БЛОКИРОВКИ ДАННЫХ: СТАНДАРТ
Ответ 2
Вы имеете в виду классы контейнеров, подобные тем, которые существуют в инфраструктуре PFX (Parallels for.NET), ConcurrentQueue и ConcurrentStack
Блог Pfx
Ответ 3
Не зная об этом, есть одна библиотека, которую я наткнулся на здесь.
Хотя, вероятно, не совсем то, что вы ищете, по крайней мере, существует реализация и обсуждение StackOverflow структуры блокировки свободной очереди в С# здесь. Прохождение процесса проверки кода StackOverflow может дать некоторую уверенность в его безопасности или предоставить информацию о том, как самостоятельно создавать контейнеры без блокировки.
Ответ 4
Блокированные структуры данных будут иметь проблемы до тех пор, пока они не изменят CLR с беспорядком, вызванным моделями памяти, см. спецификацию CLI.
Программирование с блокировкой достаточно сложно, так как вы не должны беспокоиться об этом на уровне коллекции (контейнера). Истина для любого языка там.