Пусть имеется файл A.c, в котором реализована некоторая функция A(...). Код был написан в начале 90х годов и использует большое количество глобальных переменных уровня модуля A.c (static blabla tralala).
Теперь возникла необходимость использовать функцию A(...) из нескольких потоков. Я поместил все глобальные переменные в Thread Local Storage (модификатор __declspec(thread) в VC++).
Вопрос: какие подводные камни несет в себе TLS? Будет ли заметка какая-либо существенная деградация производительности в сравнении с вариантом, когда я рефакторю код так, чтобы глобальные переменные не использовались?