다음을 통해 공유


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 특정 끝

참고 항목

참조

__declspec

C + + 키워드

개념

TLS