面试真题

C++ · 中等 · 字节跳动

map是线程安全的吗?如何实现线程安全的map

中等 C++ 🎤 字节跳动
参考答案
结论:std::map不是线程安全的,多线程并发读写需外部同步。实现方式:1) 粗粒度锁:用std::mutex包裹所有操作,写时独占,读时共享(shared_mutex);2) 细粒度分段锁:将key空间分片,每片独立锁,提升并发(如TBB concurrent_hash_map);3) 使用并发容器:如TBB的concurrent_unordered_map或C++并发TS;4) 只读场景:多个线程并发读安全,但任何写需与读互斥。要点:简单场景用mutex+lock_guard;高并发写用分段锁减少竞争;注意迭代器失效问题。
题目整理自公开面经,答案由校招宝自研生成,仅供参考