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