1,标准STL序列容器:vector, string , deue和list 2, 标准STL关联容器:set, multiset,map和multimap 3,非标准序列容器 slist 和 rope, slist是一个单向链表,rope本质上是一个重型字符串,见条款50 4,非标准关联容器 hash_set, hash_multiset, hash_map和hash_multimap 5, vector作为 string的替代品,有时候ve...
你对STL的线程安全有的第一个想法应该是它将因实现而不同。 当然,多线程程序是很普遍的,所以大部分STL厂商努力使他们的实现在线程环境中可以正常工作。但是,即使他们做得很好,大部分负担仍在你肩上,而理解为什么会这样是很重要的。STL厂商只能为你做一些可以减少你多线程的痛苦的事情,你需要知道他们做了什么。 在...
在STL容器(和大多数厂商的愿望)里对多线程支持的黄金规则已经由SGI定义,并且在它们的STL网站上发布。大体上说,你能从实现里 确定的最多是下列内容: 多个读取者是安全的。多线程可能同时读取一个容器的内容,这将正确地执行。当然,在读取时不能有任何写入者操作这个容器。 对不同容器的多个写入者是安全的。多线...
本条款是关于STL里的线程安全。当涉及到线程安全和STL容器时,你可以确定库实现允许在一个容器上的多读取者和不同容器上的多写入者。你不能希望库消除对手工并行控制的需要,而且你完全不能依赖于任何线程支持。
条款12:对STL容器线程安全性的期待现实一些 标准C++的世界是相当保守和陈旧的。在这个纯洁的世界,所有可执行文件都是静态链接的。不存在内存映射文件和共享内存。没有窗口系统,没有网络,没有数据库,没有其他进程。在这种情况下,当发现标准没有提到任何关于线程的东西时你不该感到惊讶。你对STL的线程安全有的第一个...