tgoop.com/go_interview_lib/533
Create:
Last Update:
Last Update:
💬 Каким образом хранится внутреннее состояние sync.WaitGroup?
Оно хранится в переменной типа atomic.Uint64
, которая ключает:
🔸 Counter (старшие 32 бита): эта часть отслеживает количество горутин, которые ожидает WaitGroup
. При вызове wg.Add()
с положительным значением, счётчик увеличивается, а при вызове wg.Done()
— уменьшается на единицу.
🔸 Waiter (младшие 32 бита): отслеживает количество горутин, которые ждут, пока счётчик достигнет нуля. Как только счётчик достигает нуля, все ожидающие горутины разблокируются.
Также есть последнее поле — sema uint32
, это внутренний семафор, управляемый рантаймом Go.
BY Библиотека Go для собеса | вопросы с собеседований

Share with your friend now:
tgoop.com/go_interview_lib/533