Struttura IResourceManager

Un'interfaccia alla Gestione risorse del runtime di concorrenza. Si tratta dell'interfaccia mediante la quale le utilità di pianificazione comunicano con Gestione risorse.

Sintassi

struct IResourceManager;

Membri

Enumerazioni pubbliche

Nome Descrizione
IResourceManager::OSVersion Tipo enumerato che rappresenta la versione del sistema operativo.

Metodi pubblici

Nome Descrizione
IResourceManager::CreateNodeTopology Presente solo nelle build di debug del runtime, questo metodo è un hook di test progettato per facilitare il test di Resource Manager in topologie hardware variabili, senza richiedere hardware effettivo corrispondente alla configurazione. Con le build di vendita al dettaglio del runtime, questo metodo verrà restituito senza eseguire alcuna azione.
IResourceManager::GetAvailableNodeCount Restituisce il numero di nodi disponibili per Gestione risorse.
IResourceManager::GetFirstNode Restituisce il primo nodo nell'ordine dell'enumerazione come definito da Gestione risorse.
IResourceManager::Reference Incrementa il conteggio dei riferimenti nell'istanza di Resource Manager.
IResourceManager::RegisterScheduler Registra un'utilità di pianificazione con Resource Manager. Dopo aver registrato l'utilità di pianificazione, deve comunicare con Resource Manager usando l'interfaccia ISchedulerProxy restituita.
IResourceManager::Release Decrementa il conteggio dei riferimenti nell'istanza di Resource Manager. Resource Manager viene eliminato definitivamente quando il conteggio dei riferimenti passa a 0.

Osservazioni:

Usare la funzione CreateResourceManager per ottenere un'interfaccia per l'istanza di Resource Manager singleton. Il metodo incrementa un conteggio dei riferimenti in Resource Manager ed è necessario richiamare il metodo IResourceManager::Release per rilasciare il riferimento al termine di Resource Manager. In genere, ogni utilità di pianificazione creata richiamerà questo metodo durante la creazione e rilascia il riferimento a Resource Manager dopo l'arresto.

Gerarchia di ereditarietà

IResourceManager

Requisiti

Intestazione: concrtrm.h

Spazio dei nomi: Concurrency

Metodo IResourceManager::CreateNodeTopology

Presente solo nelle build di debug del runtime, questo metodo è un hook di test progettato per facilitare il test di Resource Manager in topologie hardware variabili, senza richiedere hardware effettivo corrispondente alla configurazione. Con le build di vendita al dettaglio del runtime, questo metodo verrà restituito senza eseguire alcuna azione.

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;

Parametri

nodeCount
Numero di nodi del processore simulati.

pCoreCount
Matrice che specifica il numero di core in ogni nodo.

pNodeDistance
Matrice che specifica la distanza del nodo tra due nodi. Questo parametro può avere il valore NULL.

pProcessorGroups
Matrice che specifica il gruppo di processori a cui appartiene ogni nodo.

Osservazioni:

invalid_argument viene generata se il parametro nodeCount ha il valore 0 passato o se il parametro pCoreCount ha il valore NULL.

invalid_operation viene generata se questo metodo viene chiamato mentre sono presenti altre utilità di pianificazione nel processo.

Metodo IResourceManager::GetAvailableNodeCount

Restituisce il numero di nodi disponibili per Gestione risorse.

virtual unsigned int GetAvailableNodeCount() const = 0;

Valore restituito

Numero di nodi disponibili per Resource Manager.

Metodo IResourceManager::GetFirstNode

Restituisce il primo nodo nell'ordine dell'enumerazione come definito da Gestione risorse.

virtual ITopologyNode* GetFirstNode() const = 0;

Valore restituito

Primo nodo nell'ordine di enumerazione definito da Resource Manager.

Enumerazione IResourceManager::OSVersion

Tipo enumerato che rappresenta la versione del sistema operativo.

enum OSVersion;

Metodo IResourceManager::Reference

Incrementa il conteggio dei riferimenti nell'istanza di Resource Manager.

virtual unsigned int Reference() = 0;

Valore restituito

Conteggio dei riferimenti risultante.

Metodo IResourceManager::RegisterScheduler

Registra un'utilità di pianificazione con Resource Manager. Dopo aver registrato l'utilità di pianificazione, deve comunicare con Resource Manager usando l'interfaccia ISchedulerProxy restituita.

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

Parametri

pScheduler
Interfaccia IScheduler dell'utilità di pianificazione da registrare.

version
La versione dell'interfaccia di comunicazione usata dall'utilità di pianificazione per comunicare con Resource Manager. L'uso di una versione consente a Resource Manager di evolvere l'interfaccia di comunicazione consentendo agli utilità di pianificazione di ottenere l'accesso alle funzionalità precedenti. Gli utilità di pianificazione che desiderano usare le funzionalità di Resource Manager presenti in Visual Studio 2010 devono usare la versione CONCRT_RM_VERSION_1.

Valore restituito

Interfaccia ISchedulerProxy associata all'utilità di pianificazione di Resource Manager. L'utilità di pianificazione deve usare questa interfaccia per comunicare con Resource Manager da questo punto in poi.

Osservazioni:

Usare questo metodo per avviare la comunicazione con Resource Manager. Il metodo associa l'interfaccia per l'utilità IScheduler di pianificazione a un'interfaccia ISchedulerProxy e la riporta all'utente. È possibile usare l'interfaccia restituita per richiedere risorse di esecuzione da usare dall'utilità di pianificazione o per sottoscrivere thread con Resource Manager. Resource Manager userà gli elementi dei criteri del criterio dell'utilità di pianificazione restituiti dal metodo IScheduler::GetPolicy per determinare il tipo di thread che l'utilità di pianificazione dovrà eseguire. Se la SchedulerKind chiave dei criteri ha il valore UmsThreadDefault e il valore viene letto di nuovo dal criterio come valore UmsThreadDefault, l'interfaccia IScheduler passata al metodo deve essere un'interfaccia IUMSScheduler .

Il metodo genera un'eccezione invalid_argument se il parametro pScheduler ha il valore NULL o se il parametro version non è una versione valida per l'interfaccia di comunicazione.

Metodo IResourceManager::Release

Decrementa il conteggio dei riferimenti nell'istanza di Resource Manager. Resource Manager viene eliminato definitivamente quando il conteggio dei riferimenti passa a 0.

virtual unsigned int Release() = 0;

Valore restituito

Conteggio dei riferimenti risultante.

Vedi anche

Spazio dei nomi concurrency
Struttura ISchedulerProxy
Struttura IScheduler