Поделиться через


Локальное хранилище потока (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

Правила и ограничения протокола TLS