Прочитайте невероятное руководство и прочитайте последнюю версию на официальном сайте GCC, а не 12-летнюю копию документации, которая ссылается на древнюю версию! Текущая документация для --enable-threads
находится на http://gcc.gnu.org/install/configure.html, а документация, объясняющая, является ли libstdc ++ поточно-ориентированным, на http://gcc.gnu.org/onlinedocs/libstdc++/manual/using_concurrency.html#manual.intro.using.concurrency.thread_safety
Вы получите лучший ответ, обратившись к официальным документам, чем спрашивая SO, и надеясь, что получите ответы от людей, которые действительно знают, о чем они говорят.
1) Опция, о которой вы спрашиваете, влияет только на GCC, поэтому она, очевидно, влияет только на стандартную библиотеку GCC, в ней вообще ничего не говорится о безопасности потоков в stl.
2) Большинство реализаций библиотеки C ++ 03 (включая GCC) и все реализации библиотеки C ++ 11 следуют определению безопасности потока, используемому реализацией SGI STL: http://www.sgi.com/tech/stl/thread_safety.html
3) Как объяснено в этой документации, стандартная библиотека GCC всегда «поточно-ориентирована», если вы следуете простым правилам о невозможности доступа к объектам из нескольких потоков, --enable-threads
не влияет на это. На это влияет (как упоминалось в комментарии выше) базовый многопоточный API, который используется для реализации внутренних мьютексов и потоковых функций, необходимых внутренне для libstdc ++. На почти на всех платформах единственными поддерживаемыми опциями будут --enable-threads=single
(эквивалент --disable-threads
) или модель собственного потока (например, на платформах POSIX --enable-threads=posix
, в Windows --enable-threads=win32
), так что вы, вероятно, делаете не хотите использовать эту опцию, просто позвольте GCC выбрать значение по умолчанию для вашей платформы.