Share via


IExecutionResource (Estructura)

Una abstracción para un subproceso del hardware.

Sintaxis

struct IExecutionResource;

Miembros

Métodos públicos

Nombre Descripción
IExecutionResource::CurrentSubscriptionLevel Devuelve el número de raíces de procesador virtual activadas y subprocesos externos suscritos asociados actualmente al subproceso de hardware subyacente que representa este recurso de ejecución.
IExecutionResource::GetExecutionResourceId Devuelve un identificador único para el subproceso de hardware que representa este recurso de ejecución.
IExecutionResource::GetNodeId Devuelve un identificador único para el nodo de procesador al que pertenece este recurso de ejecución.
IExecutionResource::Remove Devuelve este recurso de ejecución a Resource Manager.

Comentarios

Los recursos de ejecución pueden ser independientes o estar asociados a raíces del procesador virtual. Se crea un recurso de ejecución independiente cuando un subproceso de la aplicación crea una suscripción de subproceso. Los métodos ISchedulerProxy::SubscribeThread e ISchedulerProxy::RequestInitialVirtualProcessors crean suscripciones de subproceso y devuelven una interfaz IExecutionResource que representa la suscripción. Crear una suscripción de subproceso es una manera de informar a Resource Manager de que un subproceso determinado participará en el trabajo en cola de un programador, junto con las raíces del procesador virtual que Resource Manager asigna al programador. Resource Manager usa la información para evitar sobrescribir subprocesos de hardware donde sea posible.

Jerarquía de herencia

IExecutionResource

Requisitos

Encabezado: concrtrm.h

Espacio de nombres: simultaneidad

IExecutionResource::CurrentSubscriptionLevel (Método)

Devuelve el número de raíces de procesador virtual activadas y subprocesos externos suscritos asociados actualmente al subproceso de hardware subyacente que representa este recurso de ejecución.

virtual unsigned int CurrentSubscriptionLevel() const = 0;

Valor devuelto

Nivel de suscripción actual.

Comentarios

El nivel de suscripción indica cuántos subprocesos en ejecución están asociados al subproceso de hardware. Solo se incluyen los subprocesos que Resource Manager conoce en forma de subprocesos suscritos y raíces de procesador virtual que ejecutan activamente servidores proxy de subprocesos.

Llamar al método ISchedulerProxy::SubscribeCurrentThread o al método ISchedulerProxy::RequestInitialVirtualProcessors con el parámetro doSubscribeCurrentThread establecido en el valor true incrementa el nivel de suscripción de un subproceso de hardware en uno. También devuelven una interfaz IExecutionResource que representa la suscripción. Una llamada correspondiente a IExecutionResource::Remove disminuye el nivel de suscripción del subproceso de hardware en uno.

El acto de activar una raíz de procesador virtual mediante el método IVirtualProcessorRoot::Activate incrementa el nivel de suscripción de un subproceso de hardware en uno. Los métodos IVirtualProcessorRoot::D eactivate o IExecutionResource::Remove reducen el nivel de suscripción en uno cuando se invocan en una raíz de procesador virtual activada.

Resource Manager usa información de nivel de suscripción como una de las formas en las que se determina cuándo mover recursos entre programadores.

IExecutionResource::GetExecutionResourceId (Método)

Devuelve un identificador único para el subproceso de hardware que representa este recurso de ejecución.

virtual unsigned int GetExecutionResourceId() const = 0;

Valor devuelto

Identificador único del subproceso de hardware subyacente a este recurso de ejecución.

Comentarios

El Runtime de simultaneidad asigna un identificador único a cada subproceso de hardware. Si varios recursos de ejecución son subprocesos de hardware asociados, todos tendrán el mismo identificador de recurso de ejecución.

IExecutionResource::GetNodeId (Método)

Devuelve un identificador único para el nodo de procesador al que pertenece este recurso de ejecución.

virtual unsigned int GetNodeId() const = 0;

Valor devuelto

Identificador único de un nodo de procesador.

Comentarios

El Runtime de simultaneidad representa subprocesos de hardware en el sistema en grupos de nodos de procesador. Normalmente, los nodos se derivan de la topología de hardware del sistema. Por ejemplo, todos los procesadores de un socket específico o un nodo NUMA específico pueden pertenecer al mismo nodo de procesador. Resource Manager asigna identificadores únicos a estos nodos que empiezan por 0 y hasta nodeCount - 1 (incluido), donde nodeCount representa el número total de nodos de procesador en el sistema.

El recuento de nodos se puede obtener de la función GetProcessorNodeCount.

IExecutionResource::Remove (Método)

Devuelve este recurso de ejecución a Resource Manager.

virtual void Remove(_Inout_ IScheduler* pScheduler) = 0;

Parámetros

pScheduler
Interfaz para el programador que realiza la solicitud para quitar este recurso de ejecución.

Comentarios

Use este método para devolver recursos de ejecución independientes, así como recursos de ejecución asociados a raíces de procesador virtual a Resource Manager.

Si se trata de un recurso de ejecución independiente que recibió de cualquiera de los métodos ISchedulerProxy::SubscribeCurrentThread o ISchedulerProxy::RequestInitialVirtualProcessors, al llamar al método Remove finalizará la suscripción de subproceso que el recurso fue creado para representar. Debe finalizar todas las suscripciones de subproceso antes de cerrar un proxy de programador y debe llamar Remove desde el subproceso que creó la suscripción.

Las raíces del procesador virtual también se pueden devolver a Resource Manager invocando el método Remove, ya que la interfaz IVirtualProcessorRoot hereda de la interfaz IExecutionResource. Es posible que tenga que devolver una raíz del procesador virtual en respuesta a una llamada al método IScheduler::RemoveVirtualProcessors o cuando haya terminado con una raíz del procesador virtual con exceso de suscripciones que obtuvo del método ISchedulerProxy::CreateOversubscriber. En el caso de las raíces del procesador virtual, no hay restricciones en las que el subproceso puede invocar el método Remove.

invalid_argument se produce si el parámetro pScheduler se establece en NULL.

invalid_operation se produce si el parámetro pScheduler es diferente del programador para el que se creó este recurso de ejecución o, con un recurso de ejecución independiente, si el subproceso actual es diferente del subproceso que creó la suscripción de subproceso.

Consulte también

concurrency (espacio de nombres)
IVirtualProcessorRoot (estructura)