Freigeben über


threadprivate

Gibt an, dass eine Variable zu einem Thread privat ist.

#pragma omp threadprivate(var)

Hinweise

Hierbei ist:

  • var
    Eine durch Trennzeichen getrennte Liste von Variablen, die als privat Sie zu einem Thread ausführen möchten. var NAMESPACE-bewertete muss entweder eine globale oder statische Variable sein oder eine lokale Variable.

Hinweise

Die threadprivate-Direktiven unterstützen keine OpenMP-Klauseln.

Weitere Informationen finden Sie unter threadprivate Direktive 2.7.1.

Die threadprivate-Direktive basieren auf das Attribut Thread__declspec . __declspec (thread) Begrenzungen gelten für threadprivate.

Sie können in jedem threadprivate DLL nicht verwenden, das über LoadLibrarygeladen wird. Dies schließt DLL ein, das /DELAYLOAD (Laden von Import verzögern)geladen werden, das auch LoadLibraryverwendet.

Sie können threadprivate in einer DLL verwenden, die statisch am Start Prozess geladen wird.

Da threadprivate auf Grundlage **__declspec (thread)**vorhanden ist threadprivate eine Variable in einem beliebigen Thread, der im Prozess, nicht nur diese Threads gestartet wird, die Teil eines Threads Teams sind, das durch einen parallelen Bereich erstellt wird. Dies ist ein Implementierungsdetail, die Sie beachten sollten, da Sie sich z. B. Konstruktoren für einen benutzerdefinierten Typ threadprivate erwartet dann häufig aufgerufen.

Eine threadprivate-Variable eines Typs destructable ist nicht gewährleistet, dass ihr aufgerufene Destruktoren verfügen. Beispiele:

struct MyType 
{
    ~MyType();
};

MyType threaded_var;
#pragma omp threadprivate(threaded_var)
int main() 
{
    #pragma omp parallel
    {}
}

Benutzer haben kein Steuerelement in Bezug auf, wenn die Threads, die den parallelen Bereich beendet wird, bewertet. Wenn diese Threads vorhanden sein, wenn der Prozess beendet wird, die Threads nicht zu den Prozess beendet wird benachrichtigt werden und der Destruktor nicht für threaded_var auf einen beliebigen Thread aufgerufen wird, der außer dem hier beendet (der primäre Thread). Deshalb sollte Code nicht auf richtiger Zerstörung von threadprivate-Variablen zählen.

Beispiel

Ein Beispiel zur Verwendung von threadprivatefinden Sie unter Private.

Siehe auch

Referenz

OpenMP-Direktiven