Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Интерфейс для контекста выполнения, который может выполняться на данном виртуальном процессоре и к которому может применяться совместное переключение контекста.
Синтаксис
struct IExecutionContext;
Участники
Открытые методы
| Имя | Описание |
|---|---|
| IExecutionContext::Dispatch | Метод, вызываемый, когда прокси потока начинает выполнять определенный контекст выполнения. Это должен быть основной рабочий поток для вашего планировщика. |
| IExecutionContext::GetId | Возвращает уникальный идентификатор контекста выполнения. |
| IExecutionContext::GetProxy | Возвращает интерфейс прокси-сервера потока, выполняющего этот контекст. |
| IExecutionContext::GetScheduler | Возвращает интерфейс планировщика, к которому принадлежит этот контекст выполнения. |
| IExecutionContext::SetProxy | Связывает поток-прокси с этим контекстом выполнения. Связанный прокси-сервер потока вызывает этот метод прямо перед началом выполнения метода контекста Dispatch . |
Замечания
Если вы реализуете пользовательский планировщик, который взаимодействует с диспетчером ресурсов Concurrency Runtime, необходимо реализовать интерфейс IExecutionContext. Потоки, созданные "Resource Manager", выполняют работу по заданию вашего планировщика, осуществляя метод IExecutionContext::Dispatch.
Иерархия наследования
IExecutionContext
Требования
Заголовок: concrtrm.h
Пространство имен: конкурентность
Метод IExecutionContext::Dispatch
Метод, вызываемый при запуске прокси-сервера потока для выполнения определенного контекста выполнения. Это должна быть основная рабочая подпрограмма для планировщика.
virtual void Dispatch(_Inout_ DispatchState* pDispatchState) = 0;
Параметры
pDispatchState
Указатель на состояние, в котором выполняется отправка этого контекста выполнения. Дополнительные сведения о состоянии отправки см. в разделе DispatchState.
Метод IExecutionContext::GetId
Возвращает уникальный идентификатор контекста выполнения.
virtual unsigned int GetId() const = 0;
Возвращаемое значение
Уникальный целочисленный идентификатор.
Замечания
Для получения уникального идентификатора объекта, реализующего GetExecutionContextId интерфейс, следует использовать методIExecutionContext, прежде чем использовать интерфейс в качестве параметра для методов, предоставляемых 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.
См. также
Пространство имен параллелизм
Структура IScheduler
Структура IThreadProxy