41 прочтение · 1 год назад
Java 1094. Напишите минимальный неблокирующий стек (всего два метода — push() и pop()).
Неблокирующие структуры данных в Java могут быть реализованы с использованием атомарных операций и циклов CAS (Compare-and-Swap). Вот пример минимальной реализации неблокирующего стека с методами push() и pop(): import java.util.concurrent.atomic.AtomicReference; public class NonBlockingStack<T> { private static class Node<T> { final T value; Node<T> next; Node(T value) { this.value = value; } } private final AtomicReference<Node<T>> top...
3 прочтения · 2 года назад
Ostep глава 29. Locked Data Structures - перевод
Параллельные структуры Данных на основе блокировок Прежде чем оставить тему блокировок, мы сначала опишем, как использовать блокировки в некоторых распространенных структурах данных. Добавление блокировок в структуру данных, чтобы сделать ее пригодной для использования потоками, делает структуру потокобезопасной (threadsafe). Конечно, то, как именно добавляются такие блокировки, определяет как правильность, так и производительность структуры данных. И, таким образом, наша задача: ЗАДАЧА: КАК ДОБАВИТЬ...