Как реализовать lock-free очередь на Go?

Senior
43 просмотров
AFK Offer AI

Классический подход — Michael-Scott queue: два атомарных указателя (head, tail), каждый узел с next. Enqueue: CAS на tail.next, потом CAS на tail. Dequeue: CAS на head. Нужен помощник для продвижения tail если другая горутина не успела. В Go удобно через atomic.Pointer[Node]. Но на практике channel часто лучше и проще.

Следующий вопрос

Что такое driver.Value?