Я использую Android 2.2, который поставляется с версией STLport.По некоторым причинам это было настроено, чтобы быть безопасным от потока.Это было сделано с помощью #define _NOTHREADS в заголовочном файле конфигурации.
Когда я сконструировал и инициализировал отдельные неиспользуемые контейнеры (например, строки) из разных потоков, я получил повреждение памяти.
С _NOTHREADS похоже, что какой-то низкоуровневый код в STL внутри allocator.cpp не выполняет надлежащую блокировку.Похоже, что C не обеспечивает безопасность потоков для malloc.
Кто-нибудь знает, почему STL может быть построен с _NOTHREADS по умолчанию на Android?Отключая это, я задаюсь вопросом, может ли быть побочный эффект.Одна вещь, о которой я могу думать, это слегка ухудшенная производительность, но я не вижу большого выбора, учитывая, что я использую много потоков.