Я ищу коллекцию структуру данных, которая:
- потокобезопасный
- без блокировки
- нераспределение (амортизация или предварительное распределение в порядке)
- ненавязчивый
- не использует экзотические свойства
Порядок элементов не имеет значения. Стек, очередь, сумка, все в порядке. Я нашел множество примеров, которые соответствуют четырем из этих пяти требований, например:
- .NET Список не является потокобезопасным.
- Если я добавлю к нему мьютекс, он не будет заблокирован.
- .NET ConcurrentStack является потокобезопасным, без блокировок, использует простой
CompareExchange
, но выделяет новый Node
для каждого элемента.
- Если я переместу указатель
next
с Node
на сам элемент, то это навязчиво.
- Структуры данных без блокировки на основе массива , как правило, требуют многословных встроенных функций.
Я чувствую, что упускаю что-то супер очевидное. Это должно быть решенной проблемой.