Does STL use any synchronization, or do I have to implement it myself by critical section?
The C++ standard doesn't specify whether STL is thread-safe or not (which is what you meant to ask). Threads and concurrent execution are platform-dependent features. Thus, an STL implementation can be fully thread-safe, partially thread-safe or single-threaded, depending on the compiler, vendor and configuration. Although most existing implementations are thread-safe to a certain degree, they differ in many subtle ways. So you should check the documentation of your current STL implementation for more information.