Недавно мне стало известно, что локальное хранилище потоков ограничено на некоторых платформах. Например, документы для библиотеки С++ boost:: thread read:
"Примечание. Ограничение реализации зависит от количества объектов хранения конкретных потоков, которые могут быть созданы, и этот предел может быть небольшим."
Я искал попытку выяснить пределы для разных платформ, но мне не удалось найти авторитетную таблицу. Это важный вопрос, если вы пишете кроссплатформенное приложение, использующее TLS. Linux была единственной платформой, на которой я нашел информацию, в виде патча Ingo Monar, отправленного в 2002 году в список ядра, добавляющий поддержку TLS, где он упоминает: "Количество TLS-областей неограничено, и нет дополнительные расходы на распределение, связанные с поддержкой TLS ". Что, если все еще верно в 2009 году (это так?), довольно изящно.
Но как насчет Linux сегодня? OS X? Окна? Solaris? Встроенные ОС? Для ОС, работающей на нескольких архитектурах, зависит ли она от разных архитектур?
Изменить: Если вам интересно, почему может быть предел, подумайте, что пространство для локального хранилища потоков будет предварительно распределено, поэтому вы будете платить за него в каждом отдельном потоке. Даже небольшая сумма перед лицом множества потоков может быть проблемой.