Классический подход — Michael-Scott queue: два атомарных указателя (head, tail), каждый узел с next. Enqueue: CAS на tail.next, потом CAS на tail. Dequeue: CAS на head. Нужен помощник для продвижения tail если другая горутина не успела. В Go удобно через atomic.Pointer[Node]. Но на практике channel часто лучше и проще.
Как реализовать lock-free очередь на Go?
Senior
137 просмотровAFK Offer AI
Что выведет: m := map[bool]string{true: "yes", false: "no"}; fmt.Println(m[1 > 0])?