Sdílet prostřednictvím


thread

Konkrétní společnosti Microsoft

Vlákno rozšířené třídy úložiště modifikátoru podproces místní proměnné deklarovat.

__declspec( thread ) declarator

Poznámky

Místní úložiště podprocesu (TLS) je mechanismus, podle kterého každý podproces procesu alokuje prostor pro specifická data podprocesu.Ve standardních programů s více podprocesy je data sdílena mezi všechny podprocesy daného procesu vzhledem k tomu, že místní úložiště podprocesu je mechanismus pro rozdělení dat podprocesu.Úplný popis podprocesů, viz při souběžném.

Prohlášení podproces místní proměnné musíte použít Syntaxe rozšířeného atributu a __declspec klíčové slovo s vlákno klíčové slovo.Například následující kód deklaruje místní proměnnou vlákna integer a inicializuje ji hodnotou:

__declspec( thread ) int tls_i = 1;

Tyto pokyny musí dodržovat při deklarování proměnných a místní objekty podprocesu:

  • Můžete aplikovat vlákno atribut pouze pro data prohlášení a definice a tříd, které nemají členské funkce; podproces nelze použít u deklarace funkce nebo definice.

  • Použití vlákno mohou ovlivňovat atribut načtení zpoždění knihovny DLL dovozy**.**

  • Můžete zadat vlákno atribut pouze na položky dat s dobou trvání statické úložiště.To zahrnuje globální datové objekty (obě statické a extern), místní statické objekty a členů tříd statická data.Automatické datové objekty nelze deklarovat vlákno atributu.

  • Je nutné použít vlákno atributu pro prohlášení a definice místního objektu podproces, zda prohlášení a definice dojít do stejného souboru nebo samostatné soubory.

  • Nelze použít vlákno jako modifikátor typ atributu.

  • Může být vytvořeno pouze POD tříd pomocí __declspec(thread).Atribut podprocesu je ignorována, pokud žádný objekt je deklarována jako součást deklarace třídy.Příklad:

    // 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
    
  • Protože prohlášení o objekty, které používají vlákno je povolen atribut, jsou tyto dva příklady sémanticky rovnocenné:

    // 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.
    
  • Standardní c umožňuje inicializaci objektu nebo proměnné s výrazem zahrnující odkaz sama na sebe, ale pouze pro objekty nestatické rozsahu.Přestože C++ obvykle povolení těchto dynamických inicializace objektu s výraz zahrnující odkaz sám na sebe, tento typ inicializace není povolena v podprocesu místní objekty.Příklad:

    // 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++
    

    Všimněte si, že sizeof výraz, který obsahuje objekt inicializace nepředstavuje odkaz sám na sebe a je povoleno v c a C++.

Konec konkrétní společnosti Microsoft

Viz také

Referenční dokumentace

__declspec

Klíčových slov jazyka C++

Koncepty

Místní úložiště vláken (TLS)