Udostępnij za pośrednictwem


Metoda IThreadProxy::SwitchOut

Usunięcie skojarzenia kontekście z podstawowej procesora wirtualnego katalogu głównego.

virtual void SwitchOut(
   SwitchingProxyState switchState = Blocking
) =0;

Parametry

  • switchState
    Wskazuje stan serwera proxy wątek, który jest wykonywany przełącznika.Parametr jest typu SwitchingProxyState.

Uwagi

Użyj SwitchOut Jeśli potrzebujesz kontekst z procesora wirtualnego katalogu głównego, jest wykonywany z jakiegokolwiek powodu, skojarzenie.W zależności od wartości można przekazać w parametrze switchState, i niezależnie od tego, czy jest on wykonywany w głównym procesora wirtualnego, wywołanie zostanie natychmiast powrócić lub zablokować wątek serwera proxy, związane z kontekstem.Występuje błąd wywołać SwitchOut z parametrem ustawiona na Idle.Ten sposób spowoduje invalid_argument wyjątku.

SwitchOutjest użyteczne, gdy chcesz zmniejszyć liczbę korzenie procesora wirtualnego, który posiada Twój harmonogram, ponieważ powierzył Menedżera zasobów, można to zrobić, lub o głównych tymczasowych oversubscribed procesora wirtualnego i są wykonywane z nim.W takim przypadku należy wywołać metodę IVirtualProcessorRoot::Remove na procesora wirtualnego katalogu głównego, przed dokonaniem wywołanie SwitchOut z parametrem switchState ustawiona na Blocking.Blokuje proxy wątku i będzie wznowić wykonywanie, gdy główny inny procesor wirtualny w harmonogramie jest dostępna do jego wykonania.Można wznowić proxy wątku blokującym, wywołując funkcję SwitchTo Aby przełączyć kontekst wykonywania proxy tego wątku.Można również wznowić proxy wątek przy użyciu jego skojarzony kontekst aktywacji głównego wirtualnego procesora.Aby uzyskać więcej informacji, jak to zrobić, zobacz IVirtualProcessorRoot::Activate.

SwitchOutmoże również należy ponownie zainicjować wirtualnego procesora tak go może zachodzić w przyszłości podczas albo blokowanie proxy wątku lub tymczasowe odłączenie od głównego procesora wirtualnego jest uruchomiony i harmonogramu go uzależnionym pracy.Użyj SwitchOut z parametrem switchState ustawiona na Blocking Jeśli chcesz zablokować proxy wątku.Później można wznowić, za pomocą SwitchTo lub IVirtualProcessorRoot::Activate jak zaznaczono powyżej.Użyj SwitchOut z parametrem ustawiona na Nesting gdy chcesz tymczasowo odłączyć ten serwer proxy wątku z procesora wirtualnego katalogu głównego jest uruchomiony na i harmonogram zasobów procesora wirtualnego jest skojarzony z.Wywołanie SwitchOut z parametrem switchState ustawiona na Nesting podczas wykonywania w głównym procesora wirtualnego spowoduje głównego do należy ponownie zainicjować i bieżący proxy wątku, aby kontynuować bez potrzeby jeden.Proxy wątek jest uważana za opuściły harmonogramu, dopóki nie wywołuje IThreadProxy::SwitchOut metody z Blocking w późniejszym momencie.Drugie wywołanie SwitchOut z parametrem ustawiona na Blocking jest przeznaczone do zwracania kontekście Państwu zablokowane, dzięki czemu może być wznowione przez SwitchTo lub IVirtualProcessorRoot::Activate w harmonogramie odłączana od.Ponieważ nie został on wykonywanie na głównego wirtualnego procesora, odbywa się nie ponownego inicjowania.

Reinitialized procesora wirtualnego katalogu głównego nie różni się od nowego katalogu głównego wirtualnego procesora, Twój harmonogram zostały przyznane przez Menedżera zasobów.Można użyć do wykonania aktywując w kontekście realizacji, przy użyciu IVirtualProcessorRoot::Activate.

SwitchOutmusi być wywołany w IThreadProxy interfejsu, który reprezentuje aktualnie wykonywany wątek lub wyniki są niezdefiniowane.

W bibliotekach i nagłówki, które zostały dostarczone z Visual Studio 2010 ta metoda nie brały parametru i nie ponownie zainicjować procesora wirtualnego katalogu głównego.Aby zachować stare zachowanie podczas uaktualniania do programu Visual Studio 2012, domyślna wartość parametru Blocking jest dostarczany.

Wymagania

Nagłówek: concrtrm.h

Obszar nazw: współbieżności

Zobacz też

Informacje

Struktura IThreadProxy