条目十二《切勿对slt容器的线性安全性又不切实际的依赖》
这一条目,我想用简短而有力的语句来总结。
stl库是为了照顾大多数情况,而不是某一领域,如果在库层次实现线性安全,很大可能是对性能有所损耗的,这样就得不偿失了,还是让开发者自己按需实现。标准没有在库实现线性安全。一般是厂商实现,可能吧,只能是期望,不一定的。
我们可以期望:
- 1.stl提供多个线程读是安全的
- 2.stl提供多个线程对不同的容器做写入操作是安全的。
这些都是期望啊啊啊。
必要的线性安全还是要靠我们自己来控制的。
线性安全一般是使用锁,为了异常安全,会使用RAII(获得资源时即初始化)来保证。在线性同步时需要注意临界区的大小,粒度太大,会造成并发量低,效率低。粒度太小,会造成cpu切换过快过多,造成cpu利用率低。