Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

threadprivate

spécifie qu'une variable est privée à un thread.

#pragma omp threadprivate(var)

où,

var

Une liste avec la virgule comme séparateur des variables que vous souhaitez rendre exclusives à un thread. var doit être une variable global- ou de l'espace de noms-scoped ou une variable statique locale.

La directive threadprivate ne prend en charge aucune clause OpenMP.

Pour plus d'informations, consultez directive de 2.7.1 threadprivate.

La directive d' threadprivate est basée sur l'attribut de thread__declspec ; les limites sur __declspec (thread) s'appliquent à threadprivate.

vous ne pouvez pas utiliser threadprivate dans aucun DLL qui sera chargé par l'intermédiaire de LoadLibrary. Cela inclut les DLL qui sont chargés avec /DELAYLOAD (Différer le chargement de l'importation), qui utilise également LoadLibrary.

Vous pouvez utiliser threadprivate dans une DLL qui est statiquement chargé au démarrage de processus.

Étant donné qu' threadprivate est basé sur __declspec (thread), une variable d' threadprivate existera dans n'importe quel thread démarré dans le processus, et pas seulement les threads qui font partie d'une équipe de thread engendrée par une région parallèle. C'est un détail d'implémentation dont vous pouvez souhaiter connaître, puisque vous pouvez remarquer, par exemple, les constructeurs pour un type défini par l'utilisateur d' threadprivate appelé plus souvent ensuite prévu.

Une variable d' threadprivate d'un type destructable n'est pas garanti avoir son destructeur appelé. Par exemple :

struct MyType 
{
    ~MyType();
};

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

Les utilisateurs n'ont aucun contrôle sur à lorsque les threads principaux de la région parallèle s'arrête. Si ces threads existent lors de la sortie du processus, les threads ne seront pas notifications sur la sortie de processus, et le destructeur ne sera pas appelé pour threaded_var sur aucun thread sauf celui qui se ferme (ici, le thread principal). Ce code ne doit pas compter sur la destruction appropriée des variables d' threadprivate .

Pour un exemple d'utilisation threadprivate, consultez privé.

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2015 Microsoft