Что такое lock-free?

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

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 очереди и счётчики.

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

Что такое benchmark в Go?