Блокировка свободного стека и очереди в C # - PullRequest
30 голосов
/ 15 февраля 2009

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

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

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

Спасибо

Ответы [ 4 ]

15 голосов
/ 26 февраля 2009

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

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

В его блоге есть серия статей о структурах без блокировки в C #.

СТРУКТУРЫ БЕЗ БЛОКИРОВКИ: СТЕК

11 голосов
/ 15 февраля 2009

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

Pfx blog

1 голос
/ 09 октября 2009

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

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

0 голосов
/ 17 марта 2009

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

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

...