thread
Microsoft 전용
스레드에서 확장 된 저장소 클래스 한정자는 스레드 지역 변수를 선언 하는 데 사용 됩니다.
__declspec( thread ) declarator
설명
스레드 로컬 저장소 (TLS) 다중 스레드 프로세스의 각 스레드에서 저장소 스레드 관련 데이터를 할당 하는 메커니즘입니다.스레드 로컬 저장소 스레드 단위 데이터를 할당 하는 메커니즘입니다 표준 다중 스레드 프로그램에서 데이터는 해당된 프로세스의 모든 스레드 간에 공유 됩니다.스레드에 대 한 자세한 내용은 참조 하십시오. 다중 스레딩.
스레드 지역 변수의 선언을 사용 해야 합니다 확장된 특성 구문 및 __declspec 키워드를 사용의 스레드 키워드.예를 들어, 다음 코드는 정수 스레드 로컬 변수를 선언한 다음 값으로 초기화합니다.
__declspec( thread ) int tls_i = 1;
스레드 지역 개체 및 변수를 선언 하는 경우 다음이 지침을 준수 해야 합니다.
적용할 수 있는 스레드에서 특성은 데이터 선언 및 정의 및 멤버 함수; 없는 클래스에 스레드 함수 선언 또는 정의에 사용할 수 없습니다.
사용은 스레드 특성을 방해할 수 있습니다 지연 로드 DLL의 가져오기**.**
사용자 지정할 수 있습니다에서 스레드 특성이 정적 저장소 기간이 데이터 항목에만.여기에 전역 데이터 개체 (둘 다 정적 및 extern)를 클래스의 정적 데이터 멤버 및 지역 정적 개체입니다.자동 데이터 개체를 선언할 수 없습니다. 해당 스레드에서 특성.
사용 하 여 해당 스레드 특성 선언 하 고 정의 스레드 지역 개체의 선언과 정의 같은 파일 또는 별도 파일에 발생 하는지 여부.
사용할 수 없습니다의 스레드 특성 형식 한정자입니다.
사용 하 여 유일한 포드 클래스를 인스턴스화할 수 있습니다 __declspec.Thread 특성 개체가 클래스 선언의 일부로 선언 된 경우는 무시 됩니다.예를 들면 다음과 같습니다.
// declspec_thread.cpp // compile with: /LD __declspec(thread) class X { public: int I; } x; // x is a thread object X y; // y is not a thread object
개체 선언에 사용 하는 때문에 있는 스레드 특성이 허용 되 고 다음 두 예제는 같은 의미입니다.
// declspec_thread_2.cpp // compile with: /LD __declspec( thread ) class B { public: int data; } BObject; // BObject declared thread local. class B2 { public: int data; }; __declspec( thread ) B2 BObject2; // BObject2 declared thread local.
표준 C를 초기화 하는 개체 또는 변수 자체에 대해서만 비 정적 범위의 개체에 대 한 참조를 포함 하는 식으로 수 있습니다.C + +가 자체에 대 한 참조를 포함 하는 식으로 일반적으로 개체의 동적 초기화를 허용 하지만 스레드 지역 개체가이 형식은 초기화 수 없습니다.예를 들면 다음과 같습니다.
// declspec_thread_3.cpp // compile with: /LD #define Thread __declspec( thread ) int j = j; // Okay in C++; C error Thread int tls_i = sizeof( tls_i ); // Okay in C and C++
참고는 sizeof 를 초기화 하는 개체를 포함 하는 식 자체에 대 한 참조를 구성 하지 않으며 및 C와 C++에서 사용할 수 있습니다.
Microsoft 특정 끝