Partilhar via


IExecutionContext Structure

Uma interface para um contexto de execução que pode correr num dado processador virtual e ser cooperativamente comutada por contexto.

Sintaxe

struct IExecutionContext;

Membros

Métodos Públicos

Nome Description
IExecutionContext::Dispatch O método que é chamado quando um proxy de thread começa a executar um determinado contexto de execução. Esta deve ser a rotina principal de trabalho para o seu programador de tarefas.
IExecutionContext::GetId Devolve um identificador único para o contexto de execução.
IExecutionContext::GetProxy Devolve uma interface para o proxy do thread que está a executar este contexto.
IExecutionContext::GetScheduler Devolve uma interface ao escalonador a que este contexto de execução pertence.
IExecutionContext::SetProxy Associa um proxy de thread a este contexto de execução. O proxy de thread associado invoca este método mesmo antes de começar a executar o método de contexto Dispatch.

Observações

Se estiver a implementar um agendador personalizado que interacente com o Gestor de Recursos do Concurrent Runtime, terá de implementar a IExecutionContext interface. As threads criadas pelo Gestor de Recursos realizam trabalho em nome do seu agendador ao executar o método IExecutionContext::Dispatch.

Hierarquia de herança

IExecutionContext

Requerimentos

Cabeçalho: concrtrm.h

Namespace: simultaneidade

IExecutionContext::Dispatch Método

O método que é chamado quando um proxy de thread começa a executar um determinado contexto de execução. Esta deve ser a rotina principal do trabalhador para o seu agendador.

virtual void Dispatch(_Inout_ DispatchState* pDispatchState) = 0;

Parâmetros

pDispatchState
Um apontador para o estado em que este contexto de execução está a ser distribuído. Para mais informações sobre o estado do despacho, consulte DispatchState.

o método IExecutionContext::GetId

Devolve um identificador único para o contexto de execução.

virtual unsigned int GetId() const = 0;

Valor de retorno

Um identificador inteiro único.

Observações

Deve usar o método GetExecutionContextId para obter um identificador único para o objeto que implementa a IExecutionContext interface, antes de usar a interface como parâmetro para os métodos fornecidos pelo Gestor de Recursos. Espera-se que devolvas o mesmo identificador quando a GetId função é invocada.

Um identificador obtido de uma fonte diferente pode resultar num comportamento indefinido.

IExecutionContext::Método GetProxy

Devolve uma interface para o proxy do thread que está a executar este contexto.

virtual IThreadProxy* GetProxy() = 0;

Valor de retorno

Uma interface IThreadProxy. Se o proxy de thread do contexto de execução não tiver sido inicializado com uma chamada para SetProxy, a função deve devolver NULL.

Observações

O Gestor de Recursos invocará o SetProxy método num contexto de execução, com uma IThreadProxy interface como parâmetro, antes de introduzir o Dispatch método no contexto. Espera-se que armazene este argumento e o devolva em chamadas para GetProxy().

IExecutionContext::GetScheduler Método

Devolve uma interface para o escalonador a que pertence este contexto de execução.

virtual IScheduler* GetScheduler() = 0;

Valor de retorno

Uma interface IScheduler.

Observações

É obrigatório inicializar o contexto de execução com uma interface válida IScheduler antes de o usar como parâmetro para métodos fornecidos pelo Gestor de Recursos.

IExecutionContext::Método SetProxy

Associa um proxy de thread a este contexto de execução. O proxy de thread associado invoca este método mesmo antes de começar a executar o Dispatch do método contexto.

virtual void SetProxy(_Inout_ IThreadProxy* pThreadProxy) = 0;

Parâmetros

pThreadProxy
Uma interface para o proxy de thread que está prestes a entrar no Dispatch método neste contexto de execução.

Observações

Espera-se que guarde o parâmetro pThreadProxy e o devolva numa chamada ao GetProxy método. O Gestor de Recursos garante que o proxy de thread associado ao contexto de execução não será alterado enquanto o proxy de thread estiver a executar o Dispatch método.

Consulte também

concorrência Namespace
Estrutura de IScheduler
Estrutura IThreadProxy