Método de IVirtualProcessorRoot::EnsureAllTasksVisible

Faz com que os dados armazenados na hierarquia de memória processadores individuais se tornam visíveis para todos os processadores no sistema. Ele garante que o limite de memória cheia foi executado em todos os processadores antes que o método retorna.

virtual void EnsureAllTasksVisible(
   IExecutionContext *pContext
) =0;

Parâmetros

  • pContext
    O contexto que atualmente é que está sendo despachado pela raiz processador virtual.

Comentários

Talvez esse método útil quando você deseja sincronizar a desativação de uma raiz virtual do processador com a adição do novo trabalho para o Agendador. Por motivos de desempenho, você decidir adicionar itens de trabalho para o Agendador sem executar uma barreira de memória, o que significa que os itens de trabalho adicionados por um thread em execução em um processador não ficam imediatamente visíveis para todos os outros processadores. Usando esse método em conjunto com o Deactivate método, você pode garantir que o Agendador não desativar todos os seu processador virtual raízes enquanto existirem de itens de trabalho do Agendador de coleções.

Uma chamada para o EnsureAllTasksVisibleThe método deverão ser originados dentro do Dispatch método usado para o contexto de execução que a raiz do processador virtual última ativação com. Em outras palavras, o proxy de thread chamando o EnsureAllTasksVisible o método deve ser aquele que está sendo executado no processador virtual root. Chamando o método em uma raiz virtual do processador que não está executando no poderia resultar em um comportamento indefinido.

invalid_argumenté lançada se o argumento pContext possui o valor NULL.

invalid_operationé lançada se a raiz virtual do processador nunca tiver sido ativada, ou o argumento pContext não representa o contexto de execução que recentemente foi despachado por esta raiz do processador virtual.

Requisitos

Cabeçalho: concrtrm.h

Namespace: Simultaneidade

Consulte também

Referência

Estrutura de IVirtualProcessorRoot

Método de IVirtualProcessorRoot::Deactivate