Freigeben über


IThreadProxy::SwitchOut-Methode

Trennt den Kontext aus dem zugrunde liegenden virtuellen Prozessor-Stamm.

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

Parameter

  • switchState
    Gibt den Zustand des Threadproxys an, der den Switch ausführt.Der Parameter besitzt den Typ SwitchingProxyState.

Hinweise

Verwendung SwitchOut benötigen Sie einen Kontext von virtuellen Prozessor Stamm trennen, aus irgendeinem Grund ausgeführt.Je nach Wert Sie an übergeben der Parameter switchState, und unabhängig davon, ob es auf einen virtuellen Prozessor Stamm ausgeführt wird, der Aufruf wird sofort zurückgegeben oder blockiert den Thread-Proxy, die dem Kontext zugeordnet.Es ist ein Fehler SwitchOut mit dem Parameter legen Sie auf Idle.Dies führt zu einer werden Invalid_argument Ausnahme.

SwitchOutist nützlich, wenn Sie Ihres Planers hat, weil der Ressourcen-Manager dazu angewiesen wurden, oder weil Sie einen temporären überzeichnet virtuellen Prozessor Stamm angefordert, und fertig sind, die Anzahl der virtuellen Prozessor Stämme reduzieren möchten.In diesem Fall sollten Sie die Methode aufrufen IVirtualProcessorRoot::Remove auf der virtuellen Prozessor-Stamm, bevor einen Aufruf an SwitchOut mit dem Parameter switchState legen Sie auf Blocking.Dies blockiert den Thread-Proxy, und es wird die Ausführung fortgesetzt, wenn Sie ein anderen virtuellen Prozessor-Stamm in den Planer zur Ausführung verfügbar ist.Der blockierende Threadproxy kann fortgesetzt werden, indem die Funktion SwitchTo aufgerufen wird, um zum Ausführungskontext dieses Threadproxys zu wechseln.Sie können auch den Threadproxy fortsetzen, indem Sie seinen zugeordneten Kontext verwenden, um den Stamm eines virtuellen Prozessors zu aktivieren.Weitere Informationen hierzu finden Sie unter IVirtualProcessorRoot::Activate.

SwitchOutkann auch verwendet werden, wenn Sie möchten den virtuellen Prozessor erneut zu initialisieren, so dass es in Zukunft aktiviert werden darf, während entweder blockiert den Thread-Proxy oder trennen es vorübergehend aus dem Stammverzeichnis des virtuellen Prozessor läuft auf, und der Zeitplan es Arbeit für abgesetzt.Verwendung SwitchOut mit dem Parameter switchState legen Sie auf Blocking Wenn Sie den Thread-Proxy blockieren möchten.Es kann später fortgesetzt werden mit einer SwitchTo oder IVirtualProcessorRoot::Activate wie oben erwähnt.Verwendung SwitchOut mit dem Parameter legen Sie auf Nesting Wenn dieser Thread-Proxy aus dem Stammverzeichnis des virtuellen Prozessor vorübergehend trennen es ausgeführt werden soll, und der Planer der virtuelle Prozessor zugeordnet ist.Aufrufen von SwitchOut mit dem Parameter switchState legen Sie auf Nesting während der Ausführung auf einem virtuellen Prozessor Stamm bewirkt die Wurzel erneut initialisiert werden und der aktuelle Thread-Proxy weiter ausgeführt, ohne die Notwendigkeit einer.Thread-Proxy wird als den Planer verlassen haben, bis es Ruft die IThreadProxy::SwitchOut -Methode mit Blocking zu einem späteren Zeitpunkt.Der zweite Aufruf von SwitchOut mit dem Parameter legen Sie auf Blocking ist vorgesehen, um den Kontext zu einem gesperrten Zustand zurückzusetzen, so dass es entweder fortgesetzt werden kann SwitchTo oder IVirtualProcessorRoot::Activate in den Planer, die sie getrennt aus.Da es nicht auf einen virtuellen Prozessor Stamm ausgeführt wurde, erfolgt keine erneute Initialisierung.

Ein neu initialisierten virtuellen Prozessor-Stamm unterscheidet sich nicht von einer neuen virtuellen Prozessor-Stamm Ihres Planers von der Ressourcen-Manager erteilt wurde.Aktivieren Sie es mit einer Ausführung Kontext für die Ausführung verwenden IVirtualProcessorRoot::Activate.

SwitchOut muss für die IThreadProxy-Schnittstelle aufgerufen werden, die den gerade ausgeführten Thread darstellt, oder die Ergebnisse sind nicht definiert.

In den Bibliotheken und Header, die im Lieferumfang des Visual Studio 2010 wird diese Methode Parameter nicht nehmen und virtuellen Prozessor-Stamm nicht initialisieren.Altes Verhalten beibehalten, beim upgrade auf Visual Studio 2012, der Standardwert für den Parameter der Blocking angegeben wird.

Anforderungen

Header: concrtrm.h

Namespace: Parallelität

Siehe auch

Referenz

IThreadProxy-Struktur