在STL容器里对多线程支持的黄金规则已经由SGI定义
1.多个读者是安全的。多线程可能同时读取一个容器的内容,这将正确的执行,当然,在读取时不能有任何写入者操作这个容器
2.对不同容器的多个写入者是安全的,。多线程可以同时写不同的容器
一个库可能试图以下列方式实现线程安全的容器
1.每次调用容器的成员函数期间都要锁定该容器
2.每个容器返回的迭代器的生存期内都要锁定该容器
3.每个容器调用算法执行期间锁定该容器
上面举例的锁定方法不能防止下面代码的问题
vector<int> v;
vector<int>:: iterator first5(find(v.begin(), v.end(), 5))