Tar*_*rek 5 c++ stl thread-safety data-structures
哪个STL容器有一个线程安全的插入过程?我想要几个线程同时插入同一个容器中.任何STL以外的实现(即Boost)都是受欢迎的!
STL容器不是线程安全的.如果您愿意,您必须自己强加同步.
我试图避免多线程中的关键区域,因为它会降低性能!
相反,它提高了性能.因为容器类可以执行的锁定类型只是非常细粒度的类型,必须为每个简单操作获取锁定.这太贵了.当您处理锁定时,您可以获得锁定并执行许多操作.这不会提高并发的几率,但会大大降低锁定开销.您可以选择对您的应用最有意义的策略,它不会强加给您.
除此之外,几乎不可能编写一个不容易出现死锁或非常昂贵的线程安全容器实现.迭代器就是问题所在.库编写器必须选择在迭代器的生命周期中锁定(冒着死锁)或者在另一个线程更改集合时需要更新所有实时迭代器(昂贵).只有昂贵的选择是安全的.再次,您选择最有意义的策略,不会强迫您选择昂贵的选择.