STL не считается потокобезопасной библиотекой, потому что контейнерные структуры данных почти всегда требуют синхронизации (например, мьютекса) для предотвращения условий гонки. 1 Поскольку потоковая передача не поддерживается стандартом C++ (до C++0x), её нельзя было добавить в STL. 1 Кроме того, синхронизация является очень дорогостоящей в случаях, когда она не требуется. 1
Однако контейнеры STL могут использоваться в многопоточных приложениях, если синхронизацию выполнять вручную. 1 Например, если два потока используют одну коллекцию, можно реализовать критическую секцию и Mutex. 25
Также можно создать собственные потокобезопасные контейнеры, совместимые с алгоритмами STL. 1 Например, для этого используют умные указатели, которые делают любой объект потокобезопасным. 3