다음을 통해 공유


TLS

업데이트: 2007년 11월

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

TLS를 위한 API 구현

TLS는 컴파일러는 물론 Win32 API 레이어를 통해 구현됩니다. 자세한 내용은 TlsAlloc, TlsGetValue, TlsSetValueTlsFree에 대한 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 규칙 및 제한