What kind of protection does the STL provide in a multi-threaded environment? Let's say I am iterating a List and dereferencing the iterator to access, say, a class that it points to. Can another thread erase that item while using the iterator? Do I need to provide my own protection in terms of a mutex or semaphore for my List?