Подтвердить что ты не робот

Блокировка свободного стека и очереди в С#

Кто-нибудь знает, существуют ли какие-либо блокированные библиотеки контейнеров для .NET?

Предпочтительно, что доказано, что оно работает и работает быстрее, чем синхронизированные оболочки, которые у нас есть в .NET.

Я нашел несколько статей на .NET, но ни один из них не указывает скорость бенчмаркинга и не внушает уверенности в их надежности.

Спасибо

4b9b3361

Ответ 1

Поздно, но лучше, чем никогда, я думал, что буду добавлять статьи Джулиана Бакналла в этот список.

Но у него нет номеров производительности. В моем тестировании его структур список хорошо масштабировался по сравнению с блокировкой (очень низкое использование ядра по сравнению с ReaderWriterLock).

В его блоге есть серия статей о структурах, свободных от блокировок, на С#.

БЛОКИРОВКИ ДАННЫХ: СТАНДАРТ

Ответ 2

Вы имеете в виду классы контейнеров, подобные тем, которые существуют в инфраструктуре PFX (Parallels for.NET), ConcurrentQueue и ConcurrentStack

Блог Pfx

Ответ 3

Не зная об этом, есть одна библиотека, которую я наткнулся на здесь.

Хотя, вероятно, не совсем то, что вы ищете, по крайней мере, существует реализация и обсуждение StackOverflow структуры блокировки свободной очереди в С# здесь. Прохождение процесса проверки кода StackOverflow может дать некоторую уверенность в его безопасности или предоставить информацию о том, как самостоятельно создавать контейнеры без блокировки.

Ответ 4

Блокированные структуры данных будут иметь проблемы до тех пор, пока они не изменят CLR с беспорядком, вызванным моделями памяти, см. спецификацию CLI.

Программирование с блокировкой достаточно сложно, так как вы не должны беспокоиться об этом на уровне коллекции (контейнера). Истина для любого языка там.