Структура IUMSThreadProxyIUMSThreadProxy Structure

Абстракция для потока выполнения.An abstraction for a thread of execution. Если требуется предоставлять для планировщика потоки планировщика в пользовательском режиме (UMS), задайте для элемента политики планировщика SchedulerKind значение UmsThreadDefault и реализуйте интерфейс IUMSScheduler.If you want your scheduler to be granted user-mode schedulable (UMS) threads, set the value for the scheduler policy element SchedulerKind to UmsThreadDefault, and implement the IUMSScheduler interface. Потоки UMS поддерживаются только в 64-разрядных операционных системах Windows 7 и более поздних версий.UMS threads are only supported on 64-bit operating systems with version Windows 7 and higher.

СинтаксисSyntax

struct IUMSThreadProxy : public IThreadProxy;

ЧленыMembers

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

nameName ОписаниеDescription
Метод iumsthreadproxy:: ЕнтеркритикалрегионIUMSThreadProxy::EnterCriticalRegion Вызывается для входа в критическую область.Called in order to enter a critical region. В критической области планировщик не будет наблюдать за операциями асинхронной блокировки, происходящими в этом регионе.When inside a critical region, the scheduler will not observe asynchronous blocking operations that happen during the region. Это означает, что планировщик не будет повторно введен для ошибок страниц, приостановки потоков, асинхронных вызовов процедур ядра (APC) и т. д. для потока UMS.This means that the scheduler will not be reentered for page faults, thread suspensions, kernel asynchronous procedure calls (APCs), and so forth, for a UMS thread.
Метод iumsthreadproxy:: ЕнтерхиперкритикалрегионIUMSThreadProxy::EnterHyperCriticalRegion Вызывается для входа в область, критическая для Hyper.Called in order to enter a hyper-critical region. В области, критической для Hyper, планировщик не будет наблюдать за операциями блокировки, происходящими в этом регионе.When inside a hyper-critical region, the scheduler will not observe any blocking operations that happen during the region. Это означает, что в планировщик не будет повторных входов для блокирующих вызовов функции, блокирующих попыток получения блокировки, сбоев страниц, приостановок потока, вызовов асинхронных процедур ядра (APC) и т. п. для потока UMS.This means the scheduler will not be reentered for blocking function calls, lock acquisition attempts which block, page faults, thread suspensions, kernel asynchronous procedure calls (APCs), and so forth, for a UMS thread.
Метод iumsthreadproxy:: ЕкситкритикалрегионIUMSThreadProxy::ExitCriticalRegion Вызывается для выхода из критической области.Called in order to exit a critical region.
Метод iumsthreadproxy:: ЕксисиперкритикалрегионIUMSThreadProxy::ExitHyperCriticalRegion Вызывается для выхода из области, критической для Hyper.Called in order to exit a hyper-critical region.
Метод iumsthreadproxy:: ЖеткритикалрегионтипеIUMSThreadProxy::GetCriticalRegionType Возвращает тип критической области, в которой находится прокси-сервер потока.Returns what kind of critical region the thread proxy is within. Поскольку регионы, критические с помощью Hyper-in, представляют собой надмножество критических регионов, если код вошел в критическую область, а затем будет возвращена критическая для Hyper-in область InsideHyperCriticalRegion .Because hyper-critical regions are a superset of critical regions, if code has entered a critical region and then a hyper-critical region, InsideHyperCriticalRegion will be returned.

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

исреадпроксиIThreadProxy

IUMSThreadProxy

ТребованияRequirements

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

Пространство имен: параллелизмNamespace: concurrency

Метод метод iumsthreadproxy:: ЕнтеркритикалрегионIUMSThreadProxy::EnterCriticalRegion Method

Вызывается для входа в критическую область.Called in order to enter a critical region. В критической области планировщик не будет наблюдать за операциями асинхронной блокировки, происходящими в этом регионе.When inside a critical region, the scheduler will not observe asynchronous blocking operations that happen during the region. Это означает, что планировщик не будет повторно введен для ошибок страниц, приостановки потоков, асинхронных вызовов процедур ядра (APC) и т. д. для потока UMS.This means that the scheduler will not be reentered for page faults, thread suspensions, kernel asynchronous procedure calls (APCs), and so forth, for a UMS thread.

virtual int EnterCriticalRegion() = 0;

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

Новая глубина критической области.The new depth of critical region. Критические регионы — это повторные входы.Critical regions are reentrant.

Метод метод iumsthreadproxy:: ЕнтерхиперкритикалрегионIUMSThreadProxy::EnterHyperCriticalRegion Method

Вызывается для входа в область, критическая для Hyper.Called in order to enter a hyper-critical region. В области, критической для Hyper, планировщик не будет наблюдать за операциями блокировки, происходящими в этом регионе.When inside a hyper-critical region, the scheduler will not observe any blocking operations that happen during the region. Это означает, что в планировщик не будет повторных входов для блокирующих вызовов функции, блокирующих попыток получения блокировки, сбоев страниц, приостановок потока, вызовов асинхронных процедур ядра (APC) и т. п. для потока UMS.This means the scheduler will not be reentered for blocking function calls, lock acquisition attempts which block, page faults, thread suspensions, kernel asynchronous procedure calls (APCs), and so forth, for a UMS thread.

virtual int EnterHyperCriticalRegion() = 0;

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

Новая глубина критической для Hyper-безопасности области.The new depth of hyper-critical region. Области, критические для Hyper, — это повторный вход.Hyper-critical regions are reentrant.

КомментарииRemarks

Планировщик должен быть чрезвычайно осторожность о том, какие методы он вызывает, и какие блокировки он получает в таких регионах.The scheduler must be extraordinarily careful about what methods it calls and what locks it acquires in such regions. Если код в таком регионе блокирует блокировку, которая удерживается каким-либо планировщиком, то может возникнуть взаимоблокировка.If code in such a region blocks on a lock that is held by something the scheduler is responsible for scheduling, deadlock may ensue.

Метод метод iumsthreadproxy:: ЕкситкритикалрегионIUMSThreadProxy::ExitCriticalRegion Method

Вызывается для выхода из критической области.Called in order to exit a critical region.

virtual int ExitCriticalRegion() = 0;

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

Новая глубина критической области.The new depth of critical region. Критические регионы — это повторные входы.Critical regions are reentrant.

Метод метод iumsthreadproxy:: ЕксисиперкритикалрегионIUMSThreadProxy::ExitHyperCriticalRegion Method

Вызывается для выхода из области, критической для Hyper.Called in order to exit a hyper-critical region.

virtual int ExitHyperCriticalRegion() = 0;

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

Новая глубина критической для Hyper-безопасности области.The new depth of hyper-critical region. Области, критические для Hyper, — это повторный вход.Hyper-critical regions are reentrant.

Метод метод iumsthreadproxy:: ЖеткритикалрегионтипеIUMSThreadProxy::GetCriticalRegionType Method

Возвращает тип критической области, в которой находится прокси-сервер потока.Returns what kind of critical region the thread proxy is within. Поскольку регионы, критические с помощью Hyper-in, представляют собой надмножество критических регионов, если код вошел в критическую область, а затем будет возвращена критическая для Hyper-in область InsideHyperCriticalRegion .Because hyper-critical regions are a superset of critical regions, if code has entered a critical region and then a hyper-critical region, InsideHyperCriticalRegion will be returned.

virtual CriticalRegionType GetCriticalRegionType() const = 0;

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

Тип критической области, в которой находится прокси-объект потока.The type of critical region the thread proxy is within.

См. также разделSee also

Пространство имен Concurrencyconcurrency Namespace
Структура IUMSSchedulerIUMSScheduler Structure