threadprivate
Especifica que una variable es privada para un subproceso.
#pragma omp threadprivate(var)
Comentarios
donde
- var
Una lista separada por comas de variables que desea private a un subproceso.var debe ser una variable global o de espacio de nombres-scoped o una variable local static.
Comentarios
la directiva de threadprivate no admite ninguna cláusula de OpenMP.
Para obtener más información, vea directiva de 2.7.1 threadprivate.
la directiva de threadprivate se basa en el atributo de thread__declspec ; los límites en __declspec (subproceso) se aplican a threadprivate.
No puede utilizar threadprivate en ningún DLL que carga mediante LoadLibrary.Esto incluye los archivos DLL cargados con /DELAYLOAD (Retrasar importación de carga), que también utiliza LoadLibrary.
Puede utilizar threadprivate en un archivo DLL que se carga dinámicamente en el inicio del proceso.
Dado que threadprivate se basa en __declspec (subproceso), una variable de threadprivate existirá en cualquier subproceso iniciado en el proceso, no sólo aquellos subprocesos que forman parte de un equipo de subproceso todos los generado por una región paralela.Éste es un detalle de implementación de que quizás desee conocer, ya que puede observar, por ejemplo, los constructores de un tipo definido por el usuario de threadprivate denominado más a menudo a esperado.
Una variable de threadprivate de un tipo destructable no se garantiza que tener su destructor denominado.Por ejemplo:
struct MyType
{
~MyType();
};
MyType threaded_var;
#pragma omp threadprivate(threaded_var)
int main()
{
#pragma omp parallel
{}
}
Los usuarios no tienen ningún control respecto a cuando los subprocesos que constituyen la región paralela finalizarán.Si existen esos subprocesos cuando los resultados de procesos, subprocesos no se notificadas sobre el resultado de procesos, y el destructor no se invoca para threaded_var en ningún subproceso excepto el salir (aquí, el subproceso primario).El código no debe contar así en la destrucción adecuada de las variables de threadprivate .
Ejemplo
Para obtener un ejemplo de cómo utilizar threadprivate, vea private.