Lock-free — подход к конкурентному программированию без использования мьютексов. Вместо блокировок используются атомарные операции (CAS — Compare-And-Swap). Гарантия: хотя бы один поток всегда делает прогресс, в отличие от lock-based подходов, где все могут заблокироваться.
for {
old := atomic.LoadInt64(&counter)
if atomic.CompareAndSwapInt64(&counter, old, old+1) {
break
}
}
Lock-free структуры сложнее в реализации, но дают лучшую производительность под высокой конкуренцией. В Go атомарные операции живут в пакете sync/atomic. Типичные примеры — lock-free очереди и счётчики.