I found conflicting information on the Internet:
http://www.sgi.com/tech/stl/thread_safety.html
The SGI STL implementation is thread safe only in the sense that simultaneous access to individual containers is safe and simultaneous read access to shared containers is safe. If several threads access the same container and can potentially write to at least one thread, then the user is responsible for the mutual exclusion between the threads during access to the container.
http://gcc.gnu.org/onlinedocs/libstdc++/manual/using_concurrency.html
User code must protect against simultaneous method calls that can access any status of a particular library object . Typically, a programmer can determine which object locks should be stored based on the objects referenced by the method call. Without going into detail, here is an example that requires locking at the user level:
All library objects are safe for use in a multi-threaded program for how long since each thread carefully blocks access to any other thread while it uses any object visible to another thread, that is, it processes library objects like any other shared resource. In general, this requirement includes both reading and writing access to objects; unless otherwise specified as safe, do not assume that two threads can access the common standard library object at the same time.
I highlighted the important part - maybe I donβt understand what they mean by this, when I read the state of an object, I think of STL containers
source
share