Структура IExecutionContextIExecutionContext Structure

Интерфейс для контекста выполнения, который может выполняться на данном виртуальном процессоре и к которому может применяться совместное переключение контекста.An interface to an execution context which can run on a given virtual processor and be cooperatively context switched.

СинтаксисSyntax

struct IExecutionContext;

ЧленыMembers

Открытые методыPublic Methods

nameName ОписаниеDescription
IExecutionContext::D PatchIExecutionContext::Dispatch Метод, вызываемый, когда прокси-поток запускает выполнение определенного контекста выполнения.The method that is called when a thread proxy starts executing a particular execution context. Это должна быть Основная рабочая подпрограммы для планировщика.This should be the main worker routine for your scheduler.
IExecutionContext:: GetIdIExecutionContext::GetId Возвращает уникальный идентификатор контекста выполнения.Returns a unique identifier for the execution context.
IExecutionContext::-proxyIExecutionContext::GetProxy Возвращает интерфейс прокси-сервера потока, который исполняет этот контекст.Returns an interface to the thread proxy that is executing this context.
IExecutionContext:: "Scheduler"IExecutionContext::GetScheduler Возвращает интерфейс к планировщику, которому принадлежит контекст выполнения.Returns an interface to the scheduler this execution context belongs to.
IExecutionContext:: СетпроксиIExecutionContext::SetProxy Связывает прокси-поток с этим контекстом выполнения.Associates a thread proxy with this execution context. Связанный прокси-поток вызывает этот метод прямо перед выполнением Dispatch метода контекста.The associated thread proxy invokes this method right before it starts executing the context's Dispatch method.

КомментарииRemarks

При реализации пользовательского планировщика, который взаимодействует с диспетчер ресурсовом среда выполнения с параллелизмом, необходимо реализовать IExecutionContext интерфейс.If you are implementing a custom scheduler that interfaces with the Concurrency Runtime's Resource Manager, you will need to implement the IExecutionContext interface. Потоки, созданные диспетчер ресурсов, выполняют работу от имени планировщика, выполняя IExecutionContext::Dispatch метод.The threads created by the Resource Manager perform work on behalf of your scheduler by executing the IExecutionContext::Dispatch method.

Иерархия наследованияInheritance Hierarchy

IExecutionContext

ТребованияRequirements

Заголовок: concrtrm. hHeader: concrtrm.h

Пространство имен: параллелизмNamespace: concurrency

IExecutionContext::D метода PatchIExecutionContext::Dispatch Method

Метод, вызываемый, когда прокси-поток запускает выполнение определенного контекста выполнения.The method that is called when a thread proxy starts executing a particular execution context. Это должна быть Основная рабочая подпрограммы для планировщика.This should be the main worker routine for your scheduler.

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

ПараметрыParameters

пдиспатчстатеpDispatchState
Указатель на состояние, под которым отправляется этот контекст выполнения.A pointer to the state under which this execution context is being dispatched. Дополнительные сведения о состоянии диспетчеризации см. в разделе DispatchState.For more information on dispatch state, see DispatchState.

Метод IExecutionContext:: GetIdIExecutionContext::GetId Method

Возвращает уникальный идентификатор контекста выполнения.Returns a unique identifier for the execution context.

virtual unsigned int GetId() const = 0;

Возвращаемое значениеReturn Value

Уникальный целочисленный идентификатор.A unique integer identifier.

КомментарииRemarks

Метод следует использовать GetExecutionContextId для получения уникального идентификатора объекта, реализующего IExecutionContext интерфейс, перед использованием интерфейса в качестве параметра для методов, предоставляемых диспетчер ресурсов.You should use the method GetExecutionContextId to obtain a unique identifier for the object that implements the IExecutionContext interface, before you use the interface as a parameter to methods supplied by the Resource Manager. При вызове функции ожидается возврат одного и того же идентификатора GetId .You are expected to return the same identifier when the GetId function is invoked.

Идентификатор, полученный из другого источника, может привести к неопределенному поведению.An identifier obtained from a different source could result in undefined behavior.

Метод IExecutionContext::-proxyIExecutionContext::GetProxy Method

Возвращает интерфейс прокси-сервера потока, который исполняет этот контекст.Returns an interface to the thread proxy that is executing this context.

virtual IThreadProxy* GetProxy() = 0;

Возвращаемое значениеReturn Value

Интерфейс IThreadProxy.An IThreadProxy interface. Если прокси-сервер потока контекста выполнения не был инициализирован с помощью вызова SetProxy функции, функция должна возвращать значение NULL .If the execution context's thread proxy has not been initialized with a call to SetProxy, the function must return NULL.

КомментарииRemarks

Диспетчер ресурсов вызовет SetProxy метод для контекста выполнения с IThreadProxy интерфейсом в качестве параметра перед входом в Dispatch метод в контексте.The Resource Manager will invoke the SetProxy method on an execution context, with an IThreadProxy interface as a parameter, prior to entering the Dispatch method on the on the context. Вы должны сохранить этот аргумент и вернуть его при вызовах GetProxy() .You are expected to store this argument and return it on calls to GetProxy().

Метод IExecutionContext:: SchedulerIExecutionContext::GetScheduler Method

Возвращает интерфейс к планировщику, которому принадлежит контекст выполнения.Returns an interface to the scheduler this execution context belongs to.

virtual IScheduler* GetScheduler() = 0;

Возвращаемое значениеReturn Value

Интерфейс IScheduler.An IScheduler interface.

КомментарииRemarks

Необходимо инициализировать контекст выполнения с допустимым IScheduler интерфейсом, прежде чем использовать его в качестве параметра для методов, предоставляемых диспетчер ресурсов.You are required to initialize the execution context with a valid IScheduler interface before you use it as a parameter to methods supplied by the Resource Manager.

Метод IExecutionContext:: СетпроксиIExecutionContext::SetProxy Method

Связывает прокси-поток с этим контекстом выполнения.Associates a thread proxy with this execution context. Связанный прокси-поток вызывает этот метод прямо перед выполнением Dispatch метода контекста.The associated thread proxy invokes this method right before it starts executing the context's Dispatch method.

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

ПараметрыParameters

псреадпроксиpThreadProxy
Интерфейс для прокси-сервера потока, который собирается ввести Dispatch метод в данном контексте выполнения.An interface to the thread proxy that is about to enter the Dispatch method on this execution context.

КомментарииRemarks

Предполагается, что параметр будет сохранен pThreadProxy и возвращен при вызове GetProxy метода.You are expected to save the parameter pThreadProxy and return it on a call to the GetProxy method. Диспетчер ресурсов гарантирует, что прокси-сервер потока, связанный с контекстом выполнения, не изменится во время выполнения метода прокси-потоком Dispatch .The Resource Manager guarantees that the thread proxy associated with the execution context will not change while the thread proxy is executing the Dispatch method.

См. также разделSee also

Пространство имен Concurrencyconcurrency Namespace
Структура ISchedulerIScheduler Structure
Структура IThreadProxyIThreadProxy Structure