threadprivate
Určuje, že proměnná soukromý podproces.
#pragma omp threadprivate(var)
Poznámky
kde,
- var
Čárkami oddělený seznam proměnných, které chcete soukromá podproces.varmusí být proměnná globální nebo obor názvů obor nebo místní statické proměnné.
Poznámky
threadprivate Směrnice podporuje žádná klauzule OpenMP.
Další informace naleznete v 2.7.1 směrnice threadprivate.
threadprivate Směrnice je založena vlákno__declspec atribut; omezuje na __declspec(thread) se u threadprivate.
Nelze použít threadprivate v jakékoli knihovny DLL, která bude načtena prostřednictvím LoadLibrary.Zahrnuje knihovny DLL, které jsou načteny s /DELAYLOAD (import odloženého načtení), který také používá LoadLibrary.
Můžete použít threadprivate v knihovně DLL, která je staticky načtena při spuštění procesu.
Protože threadprivate je založena na __declspec(thread), threadprivate proměnné budou existovat v jakékoli vlákno spuštěna v procesu, nejen podprocesů, které jsou součástí týmu podproces vytvořený paralelní regionu.Toto je podrobností implementace, které chcete znát, protože si můžete všimnout, například konstruktory pro threadprivate nazývá další často pak očekává typ definovaný uživatelem.
A threadprivate destructable typu proměnné není zaručena mít jeho destruktoru nazývá.Příklad:
struct MyType
{
~MyType();
};
MyType threaded_var;
#pragma omp threadprivate(threaded_var)
int main()
{
#pragma omp parallel
{}
}
Uživatelé mají ovládat tak, aby při bude ukončena podprocesů tvořící paralelní regionu.Pokud existují tyto podprocesů při ukončí proces podprocesy není upozorněn na ukončení procesu a nebude se objekt volána pro threaded_var na jakékoli vlákno s výjimkou jednoho, který ukončí (zde, primární podproces).Tak by kód počtu na správné likvidace threadprivate proměnné.
Příklad
Ukázku použití threadprivate, viz soukromé.