На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

TlsAlloc



The TlsAlloc function allocates a thread local storage (TLS) index. Any thread of the process can subsequently use this index to store and retrieve values that are local to the thread.

DWORD TlsAlloc(VOID)


Parameters

This function has no parameters.

Return Values

If the function succeeds, the return value is a TLS index.
If the function fails, the return value is 0xFFFFFFFF. To get extended error information, call GetLastError.

Remarks

The threads of the process can use the TLS index in subsequent calls to the TlsFree, TlsSetValue, or TlsGetValue functions.
TLS indexes are typically allocated during process or dynamic-link library (DLL) initialization. Once allocated, each thread of the process can use a TLS index to access its own TLS storage slot. To store a value in its slot, a thread specifies the index in a call to TlsSetValue. The thread specifies the same index in a subsequent call to TlsGetValue, to retrieve the stored value.

The constant TLS_MINIMUM_AVAILABLE defines the minimum number of TLS indexes available in each process. This minimum is guaranteed to be at least 64 for all systems.
TLS indexes are not valid across process boundaries. A DLL cannot assume that an index assigned in one process is valid in another process.
A DLL might use TlsAlloc, TlsSetValue, TlsGetValue, and TlsFree as follows:

1. When a DLL attaches to a process, the DLL uses TlsAlloc to allocate a TLS index. The DLL then allocates some dynamic storage and uses the TLS index in a call to TlsSetValue to store the address in the TLS slot. This concludes the per-thread initialization for the initial thread of the process. The TLS index is stored in a global or static variable of the DLL.
2. Each time the DLL attaches to a new thread of the process, the DLL allocates some dynamic storage for the new thread and uses the TLS index in a call to TlsSetValue to store the address in the TLS slot. This concludes the per-thread initialization for the new thread.

3. Each time an initialized thread makes a DLL call requiring the data in its dynamic storage, the DLL uses the TLS index in a call to TlsGetValue to retrieve the address of the dynamic storage for that thread.



For additional information on thread local storage, see Thread Local Storage.

See Also

TlsFree, TlsGetValue, TlsSetValue


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

TlsAlloc



Функция TlsAlloc распределяет локальное хранение резьбы (TLS) индекса. Любая резьба процесса может впоследствии использовать этот индекс, чтобы хранить и извлекать величины, которые локальные в резьбе.

DWORD TlsAlloc(ПУСТОТА)


Параметры

Эта функция не имеет параметры.

Обратные Величины

Если функция добивается успеха, обратная величина является индексом TLS.
Если функция терпит неудачу, обратная величина - 0xFFFFFFFF. Для того, чтобы расширять информацию ошибки, назовите GetLastError.

Замечания

Резьба процесса может использовать индекс TLS на последующих вызовах в TlsFree, TlsSetValue, или функции TlsGetValue.
ИНДЕКСЫ TLS обычно распределены в течение процесса или динамической связи библиотеки (DLL) инициализации. Как только распределено, каждая резьба процесса может использовать индекс TLS, чтобы иметь доступ к своему собственному слоту памяти TLS. Чтобы загружать величину в свой слот, резьба определяет индекс на вызове на TlsSetValue. Резьба определяет тот же индекс на последующем вызове на TlsGetValue, чтобы извлекать загруженную величину.

Константа TLS_MINIMUM_AVAILABLE определяет минимальное число индексов TLS доступный в каждом процессе. Этот минимум гарантирован, чтобы быть по крайней мере 64 для всех систем.
ИНДЕКСЫ TLS недействительны через границы процесса. DLL Не может допустить что индекс назначенный в один процесс - в силе в другом процессе.
DLL Мог использовать TlsAlloc, TlsSetValue, TlsGetValue, и TlsFree следующим образом:

1. Когда DLL подключает к процессу, DLL использует TlsAlloc, чтобы распределять индекс TLS. DLL Затем распределяет немного динамическую память и использует индекс TLS на вызове на TlsSetValue, чтобы загружать адрес в слот TLS. Это решает per-инициализацию резьбы для начальной резьбы процесса. Индекс TLS загружен в глобальную или статическую переменную DLL.
2. Всякий раз, когда DLL подключает к новой резьбе процесса, DLL распределяет немного динамическую память для новой резьбы и использует индекс TLS на вызове на TlsSetValue, чтобы загружать адрес в слот TLS. Это решает per-инициализацию резьбы для новой резьбы.

3. Всякий раз, когда инициализированная резьба делает, DLL называет требовать данных в своей динамической памяти, DLL использует индекс TLS на вызове на TlsGetValue, чтобы извлекать адрес динамической памяти для этой резьбы.



Для дополнительной информации о локальной памяти резьбы, смотри Локальная Память Резьбы.

Смотри Также

TlsFree, TlsGetValue, TlsSetValue


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz