Что такое starvation?

Middle
641 просмотров
AFK Offer AI

Starvation (голодание) — ситуация, когда горутина не может получить доступ к ресурсу, потому что другие горутины постоянно его захватывают. Горутина «голодает» — формально не заблокирована, но не продвигается.

var mu sync.Mutex
// Горутина A в tight loop: Lock → быстрая работа → Unlock → Lock
// Горутина B ждёт Lock, но A успевает перезахватить раньше

В Go sync.Mutex с версии 1.9 имеет starvation mode: если горутина ждёт мьютекс > 1мс, мьютекс переключается в справедливый режим — передаёт владение первому ожидающему в очереди (FIFO). Это решает проблему, но снижает пропускную способность.

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

Как работает go vet?