IUMSThreadProxy 结构

执行线程的抽象。 如果想要计划程序获得用户模式计划 (UMS) 线程,则将计划程序策略元素 SchedulerKind 的值设置为 UmsThreadDefault,并实现 IUMSScheduler 接口。 UMS 线程仅在具有 Windows 7 或更高版本的 64 位操作系统上受到支持。

语法

struct IUMSThreadProxy : public IThreadProxy;

成员

公共方法

名称 描述
IUMSThreadProxy::EnterCriticalRegion 调用以进入关键区域。 在关键区域内时,计划程序不会观察在该区域期间发生的异步阻塞操作。 这意味着计划程序将不再重新进入 UMS 线程的页面错误、线程挂起、内核异步过程调用 (APC) 等。
IUMSThreadProxy::EnterHyperCriticalRegion 调用以进入超关键区域。 在超关键区域内时,计划程序不会观察在该区域期间发生的阻塞操作。 这意味着计划程序将不再重新进入 UMS 线程的阻止函数调用、阻止锁定获取尝试、页面错误、线程挂起、内核异步过程调用 (APC) 等。
IUMSThreadProxy::ExitCriticalRegion 调用以退出关键区域。
IUMSThreadProxy::ExitHyperCriticalRegion 调用以退出超关键区域。
IUMSThreadProxy::GetCriticalRegionType 返回线程代理所在的关键区域类型。 由于超关键区域是关键区域的超集,如果代码已进入关键区域,然后进入超关键区域,则返回 InsideHyperCriticalRegion

继承层次结构

IThreadProxy

IUMSThreadProxy

要求

标头:concrtrm.h

命名空间: 并发

IUMSThreadProxy::EnterCriticalRegion 方法

调用以进入关键区域。 在关键区域内时,计划程序不会观察在该区域期间发生的异步阻塞操作。 这意味着计划程序将不再重新进入 UMS 线程的页面错误、线程挂起、内核异步过程调用 (APC) 等。

virtual int EnterCriticalRegion() = 0;

返回值

关键区域的新深度。 关键区域可再入。

IUMSThreadProxy::EnterHyperCriticalRegion 方法

调用以进入超关键区域。 在超关键区域内时,计划程序不会观察在该区域期间发生的阻塞操作。 这意味着计划程序将不再重新进入 UMS 线程的阻止函数调用、阻止锁定获取尝试、页面错误、线程挂起、内核异步过程调用 (APC) 等。

virtual int EnterHyperCriticalRegion() = 0;

返回值

超关键区域的新深度。 超关键区域可再入。

注解

计划程序必须非常小心它调用的方法,以及它在此类区域中获取的锁。 如果此类区域中的代码阻止由计划程序负责计划的锁上的锁,则死锁可能会随之而来。

IUMSThreadProxy::ExitCriticalRegion 方法

调用以退出关键区域。

virtual int ExitCriticalRegion() = 0;

返回值

关键区域的新深度。 关键区域可再入。

IUMSThreadProxy::ExitHyperCriticalRegion 方法

调用以退出超关键区域。

virtual int ExitHyperCriticalRegion() = 0;

返回值

超关键区域的新深度。 超关键区域可再入。

IUMSThreadProxy::GetCriticalRegionType 方法

返回线程代理所在的关键区域类型。 由于超关键区域是关键区域的超集,如果代码已进入关键区域,然后进入超关键区域,则返回 InsideHyperCriticalRegion

virtual CriticalRegionType GetCriticalRegionType() const = 0;

返回值

线程代理所在的关键区域类型。

另请参阅

并发命名空间
IUMSScheduler 结构