threadprivate
Określa, że zmienna prywatnych do wątku.
#pragma omp threadprivate(var)
Uwagi
w przypadku gdy
- var
Rozdzielana przecinkami lista zmiennych, które chcesz wprowadzić prywatnych do wątku.varmusi być zmiennej globalnej - lub obszaru nazw zakresu lub lokalnej zmiennej statycznej.
Uwagi
threadprivate Dyrektywy nie obsługuje żadnych klauzul OpenMP.
Aby uzyskać więcej informacji, zobacz 2.7.1 dyrektywy threadprivate.
threadprivate Dyrektywa oparta jest na thread__declspec atrybutu; ograniczenia __declspec(thread) stosuje się do threadprivate.
Nie można użyć threadprivate w każdej biblioteki DLL, załadowanego za pomocą LoadLibrary.Obejmuje to biblioteki DLL, które są ładowane z / Wykonać operacji delayload dla (opóźnienie obciążenia Import), który używa również LoadLibrary.
Można użyć threadprivate w bibliotece DLL, która statycznie ładowane podczas uruchamiania procesu.
Ponieważ threadprivate jest oparta na __declspec(thread), threadprivate zmienna w dowolnym wątku uruchomiona w procesie, nie tylko tych wątków, które są częścią zespołu wątku, uruchamiane przez równoległe region nie istnieje.Jest to szczegółowa implementacja, której chcesz należy zwrócić uwagę, ponieważ można zaobserwować, na przykład konstruktory threadprivate typ danych zdefiniowany przez użytkownika o nazwie więcej często, a następnie oczekuje.
A threadprivate zmienna typu destructable nie jest gwarantowane mają destruktor, jego nazwie.Na przykład:
struct MyType
{
~MyType();
};
MyType threaded_var;
#pragma omp threadprivate(threaded_var)
int main()
{
#pragma omp parallel
{}
}
Użytkownicy nie mają żadnej kontroli, co do tego, kiedy wygaśnie wątków, tworzące region równolegle.Jeśli te wątki istnieje podczas proces kończy działanie, wątki nie będzie powiadamiany o zakończenie procesu i nie zostanie wywołany destruktor dla threaded_var na każdy wątek, z wyjątkiem tego, która kończy pracę (tutaj, wątek główny).Tak kodu nie należy liczyć na zniszczenie właściwego threadprivate zmiennych.
Przykład
Dla próbki za pomocą threadprivate, zobacz prywatnego.