Compartilhar via


threadprivate

Especifica que uma variável é privativo de um thread.

#pragma omp threadprivate(var)

Comentários

onde,

  • var
    Uma lista separada por vírgulas de variáveis que você deseja tornar particulares a um thread.vardeve ser uma variável global ou namespace-escopo ou uma variável estática local.

Comentários

O threadprivate diretiva oferece suporte a cláusulas sem OpenMP.

Para obter mais informações, consulte 2.7.1 diretiva de threadprivate.

O threadprivate diretiva se baseia o thread__declspec de atributo; limita em __declspec(thread) se aplicam a threadprivate.

Não é possível usar threadprivate em qualquer DLL que será carregado por meio de LoadLibrary.Isso inclui DLLs carregadas com / Executar delayload em (importação de carregamento de atraso), que também utilize LoadLibrary.

Você pode usar threadprivate em uma DLL que é carregada estaticamente na inicialização do processo.

Porque threadprivate se baseia em __declspec(thread), um threadprivate variável existirá em qualquer thread iniciado no processo, não apenas a segmentos que fazem parte de uma equipe de thread gerada por uma região paralela.Este é um detalhe de implementação que convém estar ciente, desde que você pode observar, por exemplo, construtores para um threadprivate tipo definido pelo usuário chamado mais freqüentemente e esperado.

A threadprivate variável de um tipo de destructable não é garantido para ter seu destruidor chamado.Por exemplo:

struct MyType 
{
    ~MyType();
};

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

Os usuários não têm controle para quando os threads que constitui a região paralela terminará.Se desses segmentos existirem quando o processo for encerrado, os segmentos não serão notificados sobre a saída de processo e o destruidor não será chamado para threaded_var em qualquer segmento, exceto aquele que sai (aqui, o segmento principal).Portanto, o código não deve contar com destruição adequada de threadprivate variáveis.

Exemplo

Para obter um exemplo do uso de threadprivate, consulte particular.

Consulte também

Referência

Diretivas OpenMP