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
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.