Freigeben über


IVirtualProcessorRoot::EnsureAllTasksVisible-Methode

Veranlasst, dass in der Arbeitsspeicherhierarchie einzelner Prozessoren gespeicherte Daten für alle Prozessoren auf dem System sichtbar werden. Stellt sicher, dass ein vollständiger Arbeitsspeicherzaun auf allen Prozessoren ausgeführt wurde, bevor die Methode zurückkehrt.

virtual void EnsureAllTasksVisible(
   IExecutionContext *pContext
) =0;

Parameter

  • pContext
    Der Kontext, der gerade von diesem virtuellen Prozessorstamm weitergeleitet wird.

Hinweise

Diese Methode ist möglicherweise nützlich, wenn Sie die Deaktivierung des Stamms eines virtuellen Prozessors unter Hinzufügung neuer Arbeit zum Planer synchronisieren möchten. Aus Leistungsgründen entscheiden Sie möglicherweise, dem Planer Arbeitsaufgaben hinzuzufügen, ohne eine Arbeitsspeicherbarriere auszuführen, d. h., Arbeitsaufgaben, die von einem Thread hinzugefügt wurden, der auf einem Prozessor ausgeführt wird, sind nicht sofort auf allen anderen Prozessoren sichtbar. Mit dieser Methode in Verbindung mit der Deactivate-Methode können Sie sicherstellen, dass der Planer nicht alle seinen virtuellen Prozessorstämme deaktiviert, während Arbeitsaufgaben in den Auflistungen des Planers vorhanden sind.

Ein Aufruf der EnsureAllTasksVisibleThe-Methode muss von innerhalb der Dispatch-Methode des Ausführungskontexts stattfinden, mit dem der virtuelle Prozessorstamm zuletzt aktiviert wurde. Anders ausgedrückt muss der Threadproxy, der die EnsureAllTasksVisible-Methode aufruft, derjenige sein, der gerade auf dem virtuellen Prozessorstamm ausgeführt wird. Das Aufrufen der Methode für einen virtuellen Prozessorstamm, auf dem Sie nichts ausführen, kann zu nicht definiertem Verhalten führen.

invalid_argument wird ausgelöst, wenn das Argument pContext den Wert NULL hat.

invalid_operation wird ausgelöst, wenn der virtuelle Prozessorstamm noch nie aktiviert wurde oder wenn das Argument pContext nicht den Ausführungskontext darstellt, der von diesem virtuellen Prozessorstamm zuletzt weitergeleitet wurde.

Anforderungen

Header: concrtrm.h

Namespace: Concurrency

Siehe auch

Referenz

IVirtualProcessorRoot-Struktur

IVirtualProcessorRoot::Deactivate-Methode