Udostępnij za pośrednictwem


IUMSThreadProxy — Struktura

Abstrakcja wątku wykonywania. Jeśli chcesz, aby harmonogram otrzymał wątki schedulable (UMS) w trybie użytkownika, ustaw wartość elementu SchedulerKind zasad harmonogramu na UmsThreadDefault, i zaimplementuj IUMSScheduler interfejs. Wątki pakietu UMS są obsługiwane tylko w 64-bitowych systemach operacyjnych z systemem Windows 7 lub nowszym.

Składnia

struct IUMSThreadProxy : public IThreadProxy;

Elementy członkowskie

Metody publiczne

Nazwa/nazwisko opis
IUMSThreadProxy::EnterCriticalRegion Wywołana w celu wprowadzenia regionu krytycznego. Jeśli znajduje się w regionie krytycznym, harmonogram nie będzie obserwować asynchronicznych operacji blokowania występujących w regionie. Oznacza to, że harmonogram nie zostanie ponownie uruchomiony dla błędów strony, zawieszenia wątków, wywołań procedur asynchronicznych jądra (APCs) i tak dalej, dla wątku UMS.
IUMSThreadProxy::EnterHyperCriticalRegion Wywołana w celu wprowadzenia regionu hiperkrytycznego. Jeśli znajduje się w regionie hiperkrytycznym, harmonogram nie będzie obserwować żadnych operacji blokowania występujących w regionie. Oznacza to, że harmonogram nie zostanie ponownie podjęty w przypadku blokowania wywołań funkcji, próby uzyskania blokady, błędów strony, zawieszenia wątków, wywołań procedur asynchronicznych jądra (APCs) itd. dla wątku usługi UMS.
IUMSThreadProxy::ExitCriticalRegion Wywołana w celu wyjścia z regionu krytycznego.
IUMSThreadProxy::ExitHyperCriticalRegion Wywołana w celu zamknięcia regionu hiperkrytycznego.
IUMSThreadProxy::GetCriticalRegionType Zwraca rodzaj krytycznego regionu, w którym znajduje się serwer proxy wątku. Ponieważ regiony hiperkrytyczne są nadzbiorem regionów krytycznych, jeśli kod wprowadził region krytyczny, InsideHyperCriticalRegion a następnie zostanie zwrócony region hiperkrytyczny.

Hierarchia dziedziczenia

IThreadProxy

IUMSThreadProxy

Wymagania

Nagłówek: concrtrm.h

Przestrzeń nazw: współbieżność

IUMSThreadProxy::EnterCriticalRegion — Metoda

Wywołana w celu wprowadzenia regionu krytycznego. Jeśli znajduje się w regionie krytycznym, harmonogram nie będzie obserwować asynchronicznych operacji blokowania występujących w regionie. Oznacza to, że harmonogram nie zostanie ponownie uruchomiony dla błędów strony, zawieszenia wątków, wywołań procedur asynchronicznych jądra (APCs) i tak dalej, dla wątku UMS.

virtual int EnterCriticalRegion() = 0;

Wartość zwracana

Nowa głębokość krytycznego regionu. Krytyczne regiony są ponowne.

IUMSThreadProxy::EnterHyperCriticalRegion — Metoda

Wywołana w celu wprowadzenia regionu hiperkrytycznego. Jeśli znajduje się w regionie hiperkrytycznym, harmonogram nie będzie obserwować żadnych operacji blokowania występujących w regionie. Oznacza to, że harmonogram nie zostanie ponownie podjęty w przypadku blokowania wywołań funkcji, próby uzyskania blokady, błędów strony, zawieszenia wątków, wywołań procedur asynchronicznych jądra (APCs) itd. dla wątku usługi UMS.

virtual int EnterHyperCriticalRegion() = 0;

Wartość zwracana

Nowa głębokość regionu hiperkrytycznego. Regiony hiperkrytyczne są ponownie dostępne.

Uwagi

Harmonogram musi być niezwykle ostrożny co do metod, które wywołuje i jakie blokady uzyskuje w takich regionach. Jeśli kod w takim regionie blokuje blokadę, która jest przechowywana przez coś, co harmonogram jest odpowiedzialny za planowanie, zakleszczenie może się pojawić.

IUMSThreadProxy::ExitCriticalRegion — Metoda

Wywołana w celu wyjścia z regionu krytycznego.

virtual int ExitCriticalRegion() = 0;

Wartość zwracana

Nowa głębokość krytycznego regionu. Krytyczne regiony są ponowne.

IUMSThreadProxy::ExitHyperCriticalRegion — Metoda

Wywołana w celu zamknięcia regionu hiperkrytycznego.

virtual int ExitHyperCriticalRegion() = 0;

Wartość zwracana

Nowa głębokość regionu hiperkrytycznego. Regiony hiperkrytyczne są ponownie dostępne.

IUMSThreadProxy::GetCriticalRegionType — Metoda

Zwraca rodzaj krytycznego regionu, w którym znajduje się serwer proxy wątku. Ponieważ regiony hiperkrytyczne są nadzbiorem regionów krytycznych, jeśli kod wprowadził region krytyczny, InsideHyperCriticalRegion a następnie zostanie zwrócony region hiperkrytyczny.

virtual CriticalRegionType GetCriticalRegionType() const = 0;

Wartość zwracana

Typ regionu krytycznego, w którym znajduje się serwer proxy wątku.

Zobacz też

Przestrzeń nazw współbieżności
IUMSScheduler, struktura