IExecutionContext 结构

可以在给定虚拟处理器上运行并可以协作切换上下文的执行上下文的接口。

语法

struct IExecutionContext;

成员

公共方法

名称 描述
IExecutionContext::Dispatch 线程代理开始执行特定执行上下文时调用的方法。 这应该是计划程序的主要辅助角色例程。
IExecutionContext::GetId 返回执行上下文的唯一标识符。
IExecutionContext::GetProxy 返回正在执行此上下文的线程代理的接口。
IExecutionContext::GetScheduler 返回此执行上下文所属计划程序的接口。
IExecutionContext::SetProxy 将线程代理与此执行上下文相关联。 关联的线程代理就在开始执行上下文的 Dispatch 方法前调用此方法。

备注

如果要实现与并发运行时资源管理器接口的自定义计划程序,则将需要实现 IExecutionContext 接口。 资源管理器创建的线程通过执行 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 接口的对象的唯一标识符。 调用 GetId 函数时,预期会返回相同的标识符。

从不同源获取的标识符可能会导致未定义的行为。

IExecutionContext::GetProxy 方法

返回正在执行此上下文的线程代理的接口。

virtual IThreadProxy* GetProxy() = 0;

返回值

一个 IThreadProxy 接口。 如果执行上下文的线程代理尚未通过调用 SetProxy 进行初始化,则该函数必须返回 NULL

注解

资源管理器将在执行上下文中调用 SetProxy 方法,并使用 IThreadProxy 接口作为参数,然后在上下文中输入 Dispatch 方法。 应存储此参数,并在调用 GetProxy() 时返回此参数。

IExecutionContext::GetScheduler 方法

返回此执行上下文所属计划程序的接口。

virtual IScheduler* GetScheduler() = 0;

返回值

一个 IScheduler 接口。

注解

在将执行上下文用作资源管理器所提供方法的参数之前,需要使用有效的 IScheduler 接口初始化执行上下文。

IExecutionContext::SetProxy 方法

将线程代理与此执行上下文相关联。 关联的线程代理就在开始执行上下文的 Dispatch 方法前调用此方法。

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

参数

pThreadProxy
即将在此执行上下文中输入 Dispatch 方法的线程代理的接口。

注解

应保存参数 pThreadProxy 并在调用 GetProxy 方法时将其返回。 资源管理器保证与执行上下文关联的线程代理在线程代理执行 Dispatch 方法时不会改变。

另请参阅

并发命名空间
IScheduler 结构
IThreadProxy 结构