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