Freigeben über


IResourceManager-Struktur

Eine Schnittstelle zum Ressourcen-Manager der Concurrency Runtime. Dies ist die Schnittstelle, über die Planer mit dem Ressourcen-Manager kommunizieren.

Syntax

struct IResourceManager;

Mitglieder

Öffentliche Aufzählungen

Name Beschreibung
IResourceManager::OSVersion Ein enumerierter Typ, der die Betriebssystemversion darstellt.

Öffentliche Methoden

Name Beschreibung
IResourceManager::CreateNodeTopology Diese Methode ist nur in Debug-Builds der Laufzeitumgebung vorhanden und ist als Test-Hook konzipiert, um das Testen des Ressourcen-Managers auf unterschiedlichen Hardware-Topologien zu erleichtern, ohne dass dafür eine tatsächliche Hardware erforderlich ist, die der Konfiguration entspricht. Bei Verkaufsbuilds der Laufzeit wird diese Methode ohne Aktion zurückgegeben.
IResourceManager::GetAvailableNodeCount Gibt die Anzahl der Knoten zurück, die für den Ressourcen-Manager verfügbar sind.
IResourceManager::GetFirstNode Gibt den ersten Knoten in der Enumerationsreihenfolge zurück, wie vom Ressourcen-Manager definiert.
IResourceManager::Reference Erhöht die Verweisanzahl für die Resource Manager-Instanz.
IResourceManager::RegisterScheduler Registriert einen Scheduler beim Ressourcen-Manager. Nachdem der Scheduler registriert wurde, sollte er mit dem Ressourcen-Manager über die ISchedulerProxy zurückgegebene Schnittstelle kommunizieren.
IResourceManager::Release Verringert die Verweisanzahl für die Resource Manager-Instanz. Der Ressourcen-Manager wird zerstört, wenn der Referenzzähler 0 erreicht.

Hinweise

Verwenden Sie die CreateResourceManager-Funktion , um eine Schnittstelle zur Singleton Resource Manager-Instanz abzurufen. Die Methode erhöht eine Verweisanzahl für den Ressourcen-Manager, und Sie sollten die IResourceManager::Release-Methode aufrufen, um den Verweis freizugeben, wenn Sie mit dem Ressourcen-Manager fertig sind. In der Regel ruft jeder von Ihnen erstellte Scheduler diese Methode während der Erstellung auf und gibt den Verweis auf den Ressourcen-Manager frei, nachdem er heruntergefahren wurde.

Vererbungshierarchie

IResourceManager

Anforderungen

Kopfzeile: concrtrm.h

Namespace: Parallelität

IResourceManager::CreateNodeTopology-Methode

Diese Methode ist nur in Debug-Versionen der Laufzeitumgebung vorhanden und dient als Test-Hook, um das Testen des Ressourcen-Managers auf unterschiedlichen Hardwaretopologien zu erleichtern, ohne dass tatsächlich Hardware erforderlich ist, die der Konfiguration entspricht. Bei Retail-Builds der Laufzeit führt diese Methode keine Aktion aus und kehrt einfach zurück.

virtual void CreateNodeTopology(
    unsigned int nodeCount,
    _In_reads_(nodeCount) unsigned int* pCoreCount,
    _In_reads_opt_(nodeCount) unsigned int** pNodeDistance,
    _In_reads_(nodeCount) unsigned int* pProcessorGroups) = 0;

Parameter

nodeCount
Die Anzahl der Prozessorknoten, die simuliert werden.

pCoreCount
Ein Array, das die Anzahl der Kerne auf jedem Knoten angibt.

pNodeDistance
Eine Matrix, die den Knotenabstand zwischen zwei Knoten angibt. Dieser Parameter kann den Wert NULLaufweisen.

pProcessorGroups
Ein Array, das die Prozessorgruppe angibt, zu der jeder Knoten gehört.

Hinweise

invalid_argument wird ausgelöst, wenn der Parameter nodeCount den Wert 0 übergeben hat oder wenn der Parameter pCoreCount den Wert NULLaufweist.

invalid_operation wird ausgelöst, wenn diese Methode aufgerufen wird, während andere Scheduler im Prozess vorhanden sind.

IResourceManager::GetAvailableNodeCount-Methode

Gibt die Anzahl der Knoten zurück, die für den Ressourcen-Manager verfügbar sind.

virtual unsigned int GetAvailableNodeCount() const = 0;

Rückgabewert

Die Anzahl der Knoten, die für den Ressourcen-Manager verfügbar sind.

IResourceManager::GetFirstNode-Methode

Gibt den ersten Knoten in der Enumerationsreihenfolge zurück, wie vom Ressourcen-Manager definiert.

virtual ITopologyNode* GetFirstNode() const = 0;

Rückgabewert

Der erste Knoten in der Enumerationsreihenfolge, wie vom Ressourcen-Manager definiert.

IResourceManager::OSVersion-Aufzählung

Ein enumerierter Typ, der die Betriebssystemversion darstellt.

enum OSVersion;

IResourceManager::Reference-Methode

Erhöht die Verweisanzahl für die Resource Manager-Instanz.

virtual unsigned int Reference() = 0;

Rückgabewert

Die resultierende Referenzanzahl.

IResourceManager::RegisterScheduler-Methode

Registriert einen Scheduler beim Ressourcen-Manager. Nachdem der Scheduler registriert wurde, sollte er mit dem Ressourcen-Manager über die ISchedulerProxy zurückgegebene Schnittstelle kommunizieren.

virtual ISchedulerProxy *RegisterScheduler(
    _Inout_ IScheduler* pScheduler,
    unsigned int version) = 0;

Parameter

pScheduler
Eine IScheduler Schnittstelle zum Scheduler, der zu registrieren ist.

Version
Die Version der Kommunikationsschnittstelle, die der Scheduler verwendet, um mit dem Ressourcen-Manager zu kommunizieren. Die Verwendung einer Version ermöglicht es dem Ressourcen-Manager, die Kommunikationsschnittstelle weiterzuentwickeln und Planungsprogrammen Zugriff auf ältere Funktionalitäten zu ermöglichen. Planer, die Ressourcen-Manager-Features verwenden möchten, die in Visual Studio 2010 vorhanden sind, sollten die Version CONCRT_RM_VERSION_1verwenden.

Rückgabewert

Die ISchedulerProxy Schnittstelle, die der Ressourcen-Manager Ihrem Scheduler zugeordnet hat. Ihr Scheduler sollte diese Schnittstelle verwenden, um von diesem Punkt an mit dem Ressourcen-Manager zu kommunizieren.

Hinweise

Verwenden Sie diese Methode, um die Kommunikation mit dem Ressourcen-Manager zu initiieren. Die Methode ordnet die IScheduler Schnittstelle für ihren Scheduler einer ISchedulerProxy Schnittstelle zu und übergibt sie an Sie zurück. Sie können die zurückgegebene Schnittstelle verwenden, um Ausführungsressourcen für die Verwendung durch den Planer anzufordern oder Threads mit dem Ressourcen-Manager zu abonnieren. Der Ressourcenmanager verwendet Richtlinienelemente aus der von der Methode IScheduler::GetPolicy zurückgegebenen Zeitplanrichtlinie, um zu bestimmen, welche Art von Threads der Scheduler ausführen muss. Wenn Ihr SchedulerKind Richtlinienschlüssel den Wert UmsThreadDefault aufweist und der Wert aus der Richtlinie als Wert UmsThreadDefault gelesen wird, muss die IScheduler an die Methode übergebene Schnittstelle eine IUMSScheduler Schnittstelle sein.

Die Methode löst eine invalid_argument Ausnahme aus, wenn der Parameter den Wert pScheduler aufweist oder wenn der Parameter NULLversion keine gültige Version für die Kommunikationsschnittstelle ist.

IResourceManager::Release-Methode

Verringert die Verweisanzahl für die Resource Manager-Instanz. Der Ressourcen-Manager wird zerstört, wenn der Referenzzähler 0 erreicht.

virtual unsigned int Release() = 0;

Rückgabewert

Die resultierende Referenzanzahl.

Siehe auch

Concurrency-Namespace
ISchedulerProxy-Struktur
IScheduler-Struktur