Lock-free очередь использует atomic операции вместо mutex. Основа — CAS (Compare-And-Swap): читаешь head, создаёшь новый node, атомарно заменяешь head если он не изменился. Если изменился — retry. В Go: atomic.CompareAndSwapPointer. Классическая реализация — Michael-Scott queue (linked list + CAS на head и tail). Сложно написать правильно — ABA problem, memory ordering. На практике каналы Go быстрее для большинства случаев. Lock-free нужен для экстремальной производительности.
Как реализовать lock-free queue?
Senior
135 просмотровAFK Offer AI
Как работает page allocator?