面试真题

Go · 中等 · 大华股份

sync.WaitGroup底层原理

中等 Go 🎤 大华股份
参考答案
结论:WaitGroup通过计数器、信号量和原子操作实现协程等待。核心要点:1.内部state1包含counter、waiter计数和信号量;2.Add(delta)原子增加counter,Done()即Add(-1);3.Wait()若counter>0则waiter+1并runtime_Semacquire睡眠;4.当counter减为0时释放信号量唤醒所有等待者;5.使用atomic保证并发安全,noCopy防止拷贝。原理:state1是12字节,通过原子操作维护状态,睡眠基于信号量机制。示例:var wg sync.WaitGroup; wg.Add(1); go func(){defer wg.Done()}(); wg.Wait()。
题目整理自公开面经,答案由校招宝自研生成,仅供参考