Поделиться через


Структура IExecutionContext

Интерфейс для контекста выполнения, который может выполняться на данном виртуальном процессоре и к которому может применяться совместное переключение контекста.

Синтаксис

struct IExecutionContext;

Участники

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

Имя Описание
IExecutionContext::D ispatch Метод, вызываемый при запуске прокси-сервера потока для выполнения определенного контекста выполнения. Это должна быть основная рабочая подпрограмма для планировщика.
IExecutionContext::GetId Возвращает уникальный идентификатор контекста выполнения.
IExecutionContext::GetProxy Возвращает интерфейс прокси-сервера потока, выполняющего этот контекст.
IExecutionContext::GetScheduler Возвращает интерфейс планировщику, к которому относится контекст выполнения.
IExecutionContext::SetProxy Связывает прокси-сервер потока с этим контекстом выполнения. Связанный прокси-сервер потока вызывает этот метод прямо перед началом выполнения метода контекста Dispatch .

Замечания

Если вы реализуете пользовательский планировщик, который взаимодействует с диспетчером ресурсов среды выполнения параллелизма, необходимо реализовать IExecutionContext интерфейс. Потоки, созданные Resource Manager, выполняют работу от имени планировщика, выполняя IExecutionContext::Dispatch метод.

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

IExecutionContext

Требования

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

Пространство имен: concurrency

Метод IExecutionContext::D ispatch

Метод, вызываемый при запуске прокси-сервера потока для выполнения определенного контекста выполнения. Это должна быть основная рабочая подпрограмма для планировщика.

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

Параметры

pDispatchState
Указатель на состояние, в котором выполняется отправка этого контекста выполнения. Дополнительные сведения о состоянии отправки см. в разделе DispatchState.

Метод IExecutionContext::GetId

Возвращает уникальный идентификатор контекста выполнения.

virtual unsigned int GetId() const = 0;

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

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

Замечания

Для получения уникального идентификатора объекта, реализующего IExecutionContext интерфейс, следует использовать методGetExecutionContextId, прежде чем использовать интерфейс в качестве параметра для методов, предоставляемых Resource Manager. Ожидается, что при вызове функции возвращается тот же идентификатор GetId .

Идентификатор, полученный из другого источника, может привести к неопределенному поведению.

Метод IExecutionContext::GetProxy

Возвращает интерфейс прокси-сервера потока, выполняющего этот контекст.

virtual IThreadProxy* GetProxy() = 0;

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

Интерфейс IThreadProxy. Если прокси-сервер потока выполнения не был инициализирован с вызовом вызова SetProxy, функция должна вернуться NULL.

Замечания

Resource Manager вызовет SetProxy метод в контексте выполнения с IThreadProxy интерфейсом в качестве параметра перед вводом Dispatch метода в контексте. Ожидается, что этот аргумент хранится и возвращается при вызовах GetProxy().

Метод IExecutionContext::GetScheduler

Возвращает интерфейс планировщику, к которому относится контекст выполнения.

virtual IScheduler* GetScheduler() = 0;

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

Интерфейс IScheduler.

Замечания

Необходимо инициализировать контекст выполнения с допустимым IScheduler интерфейсом, прежде чем использовать его в качестве параметра для методов, предоставляемых Resource Manager.

Метод IExecutionContext::SetProxy

Связывает прокси-сервер потока с этим контекстом выполнения. Связанный прокси-сервер потока вызывает этот метод прямо перед началом выполнения метода контекста Dispatch .

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

Параметры

pThreadProxy
Интерфейс прокси-сервера потока, который требуется ввести Dispatch метод в этом контексте выполнения.

Замечания

Ожидается, что вы сохраните параметр pThreadProxy и вернете его при вызове GetProxy метода. Resource Manager гарантирует, что прокси-сервер потока, связанный с контекстом выполнения, не изменится, пока прокси-сервер потока выполняет Dispatch метод.

См. также

Пространство имен concurrency
Структура IScheduler
Структура IThreadProxy