Udostępnij za pośrednictwem


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.

Zobacz też

Informacje

Dyrektyw OpenMP