Локальное хранилище потока (TLS)
Метод локального хранилища потока позволяет каждому потоку многопоточного процесса выделять адреса для хранения данных для определенного потока.Динамически привязанные данные (времени выполнения) поток-специфического поддерживается посредством API-интерфейса TLS ([TlsAlloc], [TlsGetValue], [TlsSetValue] и [TlsFree]).Помимо существующей реализации API компилятор Win32 и Visual C++ теперь поддерживают статически связываемые данные, специфичные для каждого потока (времени загрузки).
Реализация API для TLS
Метод локального хранилища потока реализуется на уровне Win32 API и компилятора.Дополнительные сведения см. в документации по API Win32 для [TlsAlloc], [TlsGetValue], [TlsSetValue] и [TlsFree].
Компилятор Visual C++ содержит ключевое слово, позволяющее добиться более высокого уровня автоматизации выполнения операций TLS, чем на уровне API.Описание синтаксиса представлено в следующем разделе — Реализация компилятора для TLS.
Реализация компилятора для TLS
Для поддержки TLS в языки C и C++ добавлен новый атрибут thread, поддерживаемый компилятором Visual C++.Этот атрибут является расширенным модификатором класса хранилища, как описано в предыдущем разделе.Используйте ключевое слово __declspec для объявления переменной thread.В следующем примере кода показано, как объявлять целочисленную локальную переменную потока и инициализировать её некоторым значением:
__declspec( thread ) int tls_i = 1;
См. также
Основные понятия
Реализация многопоточности на языке C с помощью функций Win32