Condividi tramite


Struttura IResourceManager

Un'interfaccia al Gestore delle risorse del runtime di concorrenza. Questa è l'interfaccia tramite la quale i pianificatori comunicano con il Gestore delle 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 versioni retail del runtime, questo metodo non eseguirà alcuna azione e terminerà.
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 uno schedulatore con il Resource Manager. Dopo aver registrato l'utilità di pianificazione, esso deve comunicare con il Gestore delle Risorse usando l'interfaccia ISchedulerProxy restituita.
IResourceManager::Release Decrementa il conteggio dei riferimenti nell'istanza del 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 nel Resource Manager ed è necessario richiamare il metodo IResourceManager::Release per rilasciare il riferimento quando hai finito di usare Resource Manager. In genere, ogni scheduler che crei invoca questo metodo durante la creazione e rilascerà il riferimento al Resource Manager dopo che si sarà arrestato.

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 generato se il parametro nodeCount ha il valore 0 è stato passato o se il parametro pCoreCount ha il valore NULL.

invalid_operation viene lanciata se questo metodo viene chiamato mentre esistono altri scheduler 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 uno schedulatore con il Resource Manager. Dopo aver registrato l'utilità di pianificazione, esso deve comunicare con il Gestore delle Risorse usando l'interfaccia ISchedulerProxy restituita.

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

Parametri

pScheduler
Interfaccia IScheduler del pianificatore da registrare.

version
La versione dell'interfaccia di comunicazione utilizzata dal pianificatore per comunicare con il Gestore delle Risorse. L'uso di una versione consente al Resource Manager di evolvere l'interfaccia di comunicazione e permette ai pianificatori di accedere alle funzionalità precedenti. I pianificatori che desiderano utilizzare le funzionalità di Resource Manager presenti in Visual Studio 2010 devono usare la versione CONCRT_RM_VERSION_1.

Valore restituito

L'interfaccia ISchedulerProxy che il Resource Manager ha associato al tuo schedulatore. 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 IScheduler del pianificatore a un'interfaccia ISchedulerProxy e la restituisce 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. Il Resource Manager utilizzerà gli elementi del criterio restituiti dal metodo IScheduler::GetPolicy per determinare che tipo di thread il pianificatore avrà bisogno di 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 del 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 concorrenza
Struttura ISchedulerProxy
Struttura IScheduler