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
方法时不会改变。