Разница между локальным хранилищем данных и локальными переменными заключается в том, что локальное хранилище потоков не обязательно должно быть локальным для функции. Обычные локальные переменные могут быть недоступны, как только функция, объявляющая их, возвращается. Резервное хранилище, доступное с помощью pthread_getspecific
и pthread_setspecific
, может быть безопасно использовано после того, как функция, которая его создала, будет удалена.
Вы можете представить локальные переменные потока как связанные с потоком глобальные переменные, разделяемые между функциями, запущенными в том же потоке. Они часто используются для создания устаревшего кода, который сильно использует глобальные переменные, многопоточно-безопасные. Как и во всех глобальных переменных, их следует использовать с осторожностью - если вы можете обойтись только с использованием локальных переменных, непременно сделайте это. Если вам нужны глобальные переменные в потоке, используйте локальное хранилище потоков.
Спасибо. Я нашел этот ответ очень ясным, и вы очистили мои сомнения по этому поводу. Это было именно то, что я хотел знать –