Изменения

Перейти к: навигация, поиск

Очередь Майкла и Скотта

16 байт убрано, 19:08, 4 сентября 2022
м
rollbackEdits.php mass rollback
'''Очередь Майкла и Скотта''' (англ. ''(Michael-Scott Queue)'' ) - алгоритм построения lock-free очереди. Впервые был предложен Maged M. Michael и Michael L. Scott <ref>[http://www.cs.rochester.edu/~scott/papers/1996_PODC_queues.pdf? Simple, Fast, and Practical Non-Blocking and BlockingConcurrent Queue Algorithms]</ref>.
== Структура очереди ==
'''def''' pop(): '''Int'''
newTail = '''new''' Node(x, '''new''' AtomicReference<Node>(null))
'''while''' ('''true'''): <font color=green>//CAS-цикл</font>
head = H.get() <font color=green>//Сохраняем в локальные переменные текущие голову и хвост, а так же следующий за головным элемент</font>
tail == head => tail.next == head.next
*/</font>
'''CAS'''(T, tail, nextHead)
'''else''':
<font color=green>// Очередь гарантированно не пуста, следующий элемент существует</font>
1632
правки

Навигация