Condividi tramite


threadprivate

Specifica che una variabile è privata a un thread.

#pragma omp threadprivate(var)

Note

dove:

  • var
    Un elenco delimitato da virgole delle variabili che si desidera rendere private di un thread.var deve essere una variabile dello spazio dei nomi-scoped o globale o una variabile locale statica.

Note

threadprivate la direttiva non supporta clausole di OpenMP.

Per ulteriori informazioni, vedere una direttiva di 2.7.1 threadprivate.

threadprivate la direttiva è basata su thread__declspec attributo; limiti su __declspec (thread) si applica a threadprivate.

Non è possibile utilizzare threadprivate in qualsiasi DLL che verrà caricato tramite LoadLibrary.Sono incluse le DLL caricati con /DELAYLOAD (Importazione a caricamento ritardato), che utilizza inoltre LoadLibrary.

È possibile utilizzare threadprivate in una DLL che viene caricato in modo statico all'avvio del processo.

Poiché threadprivate è basato su __declspec (thread), a threadprivate la variabile continuerà a esistere in qualsiasi thread avviato nel processo, non solo quelli di cui fa parte di un team di thread generato da un'area parallela.Si tratta di un dettaglio di implementazione di cui può essere opportuno tenere presente, poiché si può notare, ad esempio, i costruttori per la classe threadprivate il tipo definito dall'utente ha chiamato più spesso quindi previsto.

In threadprivate la variabile di un tipo destructable non è garantito desidera che il distruttore chiamato.Di seguito è riportato un esempio:

struct MyType 
{
    ~MyType();
};

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

Gli utenti non dispongono di controllo quanto a quando i thread che costituiscono area parallela termineranno.Se tali thread esistenti al termine del processo, i thread non verranno passate sull'uscita del processo e il distruttore non verranno chiamati per threaded_var in qualsiasi thread escludere che l'uscita da (in questo caso, il thread primario).Pertanto il codice non necessario contare sulla distruzione corretta di threadprivate variabili.

Esempio

Per un esempio di utilizzo threadprivate, vedere privato.

Vedere anche

Riferimenti

Direttive e di OpenMP