Локальное хранилище потока (TLS)
Метод локального хранилища потока позволяет каждому потоку многопоточного процесса выделять адреса для хранения данных для определенного потока. Динамически связываемые данные отдельных потоков (времени выполнения) поддерживаются с помощью TLS API-функций ([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