Freigeben über


IThreadProxy::SwitchTo-Methode

Führt einen kooperativen Kontextwechsel vom gegenwärtig Ausführungskontext bis ein unterschiedliches aus.

virtual void SwitchTo(
   _Inout_ IExecutionContext * pContext,
   SwitchingProxyState switchState
) =0;

Parameter

  • pContext
    Der Ausführungskontext kooperativ zu wechseln.

  • switchState
    Gibt den Zustand des Threads proxys an, der den Schalter ausgeführt wird.Der Parameter ist vom Typ SwitchingProxyState.

Hinweise

Verwenden Sie diese Methode, um aus einem Ausführungskontext in einen anderen, von der IExecutionContext::Dispatch-Methode des ersten Ausführungskontexts zu wechseln.Die Methode wird der Ausführungskontext pContext mit einem Thread proxy zu, sofern sie noch nicht mit einem zugeordnet ist.Der Besitz des aktuellen Threads proxys wird durch den Wert bestimmt, den Sie für das switchState-Argument angeben.

Verwenden Sie den Wert Idle, wenn Sie den derzeit ausgeführten Thread proxy an den Ressourcen-Manager zurückgeben möchten.Das Aufrufen von SwitchTo mit dem Parameter switchState festgelegt Idle wird der Ausführungskontext pContext, das auf der zugrunde liegenden die Ressource zu starten.Besitz dieses Threads proxys wird an den Ressourcen-Manager übertragen. Sie sind erwartet, aus der Dispatch-Methode des Ausführungskontexts bald nach dem Beenden SwitchTo, um die Übertragung abzuschließen.Der Ausführungskontext, in dem sich der Thread weitergeleitete proxy wird vom Thread proxy Zuordnung aufgehoben, und der Planer kann sie wiederzuverwenden oder freigegeben, während er sie zerstören.

Verwenden Sie den Wert Blocking, wenn Sie diesen Thread proxy einen blockierten Zustand eingeben möchten.Das Aufrufen von SwitchTo mit dem Parameter switchState festgelegt Blocking wird der Ausführungskontext pContext, die Ausführung zu starten und Blockiert den aktuellen Thread, bis er proxy fortgesetzt wird.Der Planer behält den Besitz des Threads proxys bei, wenn sich der Thread im proxy Blocking Zustand befindet.Der blockierenden Threads proxy kann fortgesetzt werden, indem die Funktion SwitchTo aufruft, um zum Ausführungskontext proxys diesem Thread wechseln.Sie können den Thread proxy auch fortsetzen, indem Sie die zugeordneten Kontext verwenden, um einen Stammpfad virtueller Prozessor zu aktivieren.Weitere Informationen dazu finden Sie unter IVirtualProcessorRoot::Activate ausführt.

Verwenden Sie den Wert Nesting, wenn Sie diesen Thread im virtuellen Stammverzeichnis der Prozessor proxy vorübergehend trennen möchten, den sie an den Planer ausführt, und diese Arbeit für weiterleitet.Das Aufrufen von SwitchTo mit dem Parameter switchState festgelegt Nesting wird der Ausführungskontext pContext, die Ausführung zu starten, und der aktuelle Thread proxy setzt die Ausführung auch ohne dass für virtuelle Stammverzeichnis der Prozessor.Der Thread wird als proxy den Planer verlassen haben, bis er die IThreadProxy::SwitchOut-Methode auf einem späteren Zeitpunkt aufruft.Die IThreadProxy::SwitchOut proxy Methode konnte den Thread blockiert, bis ein virtueller Prozessor Registrierungsstamm verfügbar ist, sie neu zu planen.

SwitchTo aufgerufen werden muss IThreadProxy von der Schnittstelle, die den derzeit ausgeführten Thread darstellt, oder die Ergebnisse nicht definiert werden.Die Funktion löst invalid_argument aus, wenn der Parameter pContext zu NULL festgelegt ist.

Anforderungen

Header: concrtrm.h

Namespace: Parallelität

Siehe auch

Referenz

IThreadProxy-Struktur

SwitchingProxyState-Enumeration