Майкл-Скотт без блокировки. Можно ли расслабить последовательную последовательность?JAVA

Программисты JAVA общаются здесь
Anonymous
Майкл-Скотт без блокировки. Можно ли расслабить последовательную последовательность?

Сообщение Anonymous »

Я изучаю алгоритмы без блокировки и решил внедрить связанную очередь Михаил-Скотта. Поэтому я начал с определения класса Helper Packate Private для структуры связанного списка:

Код: Выделить всё

private static class Node {
private final AtomicReference value;
private final AtomicReference next;

private Node(T value, Node next) {
this.value = new AtomicReference(value);
this.next = new AtomicReference(next);
}

private Node(T value) {
this(value, null);
}

private Node() {
this(null, null);
}
}
Здесь в основном у нас есть ссылки с последовательной последовательности Semantic. Это связано с тем, что AtomicReference по существу содержит частный летучий t под капотом. Таким образом, очередь Майкла-Скотта может быть реализована следующим образом: < /p>

Код: Выделить всё

public class ConcurrentLinkedQueue implements Queue {
private AtomicReference head;
private AtomicReference tail;

public ConcurrentLinkedQueue() {
Node initial = new Node();
head = new AtomicReference(initial);
tail = new AtomicReference(initial);
}

@Override
public void enqueu(T t) {
while(true) {
Node currentHead = head.get(); // 

Подробнее здесь: [url]https://stackoverflow.com/questions/79461729/michael-scott-lock-free-queue-is-it-possible-to-relax-sequential-consistency[/url]

Вернуться в «JAVA»