TLS

TLS(스레드 로컬 저장소)는 지정된 다중 스레드 프로세스의 각 스레드에서 스레드별 데이터를 저장할 위치를 할당할 수 있는 방법입니다. 동적으로 바인딩된(런타임) 스레드 관련 데이터는 TLS API([TlsAlloc], [TlsGetValue], [TlsSetValue] 및 [TlsFree])를 통해 지원됩니다. Win32와 Visual C++ 컴파일러는 기존 API 구현뿐만 아니라 정적으로 바인딩된(로드 시간) 스레드별 데이터도 지원합니다.

TLS를 위한 API 구현

TLS는 컴파일러는 물론 Win32 API 레이어를 통해 구현됩니다. 자세한 내용은 [TlsAlloc], [TlsGetValue], [TlsSetValue] 및 [TlsFree]에 대한 Win32 API 설명서를 참조하십시오.

Visual C++ 컴파일러에는 API 레이어를 사용하지 않고 TLS 작업을 자동화하는 키워드가 포함되어 있습니다. 이 구문은 다음 단원인 TLS를 위한 컴파일러 구현에서 설명합니다.

TLS를 위한 컴파일러 구현

TLS를 지원하기 위해 C 및 C++ 언어에 thread라는 새로운 특성이 추가되었으며 Visual C++ 컴파일러에서 이 특성을 지원합니다. 이 특성은 이전 단원에서 설명한 대로 확장 저장소 클래스 한정자입니다. __declspec 키워드를 사용하여 thread 변수를 선언합니다. 예를 들어, 다음 코드는 정수 스레드 로컬 변수를 선언한 다음 값으로 초기화합니다.

__declspec( thread ) int tls_i = 1;

참고 항목

개념

C 및 Wind32를 사용한 다중 스레딩

TLS 규칙 및 제한