面试真题

Go · 中等 · 百度

Map并发安全吗,如果是sync.map,它是如何保证并发安全?

中等 Go 🎤 百度
参考答案
结论:原生map非并发安全,并发读写会panic;sync.Map通过读写分离+原子操作保证安全。核心要点:1.原生map检测并发写冲突直接fatal error; 2.sync.Map结构含read(atomic.Value存只读map)和dirty(互斥锁保护的全量map); 3.读路径:先无锁读read,命中则返;未命中加锁查dirty,miss计数增,当miss达到dirty长度则将dirty提升为read; 4.写路径:read中存在则CAS更新(标记未删除),否则加锁写dirty; 5.删除用惰性标记,延迟清理。适用读多写少场景,频繁写性能不如分片锁。
题目整理自公开面经,答案由校招宝自研生成,仅供参考