Compartir a través de


Clase CThreadPool

Esta clase proporciona un grupo de subprocesos de trabajo que procesen una cola de elementos de trabajo.

template <
   class Worker,
   class ThreadTraits = DefaultThreadTraits
>
class CThreadPool :
   public IThreadPoolConfig

Parámetros

  • Trabajo
    La clase bajo arquetipo worker que proporciona el código utilizado en los elementos de trabajo de proceso en cola en el grupo de subprocesos.

  • ThreadTraits
    La clase que proporciona la función utilizada para crear los subprocesos del grupo.

Members

9tz6fz1e.collapse_all(es-es,VS.110).gifConstructores públicos

Name

Descripción

CThreadPool::CThreadPool

El constructor del grupo de subprocesos.

CThreadPool::~CThreadPool

El destructor para el grupo de subprocesos.

9tz6fz1e.collapse_all(es-es,VS.110).gifMétodos públicos

Name

Descripción

CThreadPool::AddRef

Implementación de IUnknown::AddRef.

CThreadPool::GetNumThreads

Llame a este método para obtener el número de subprocesos del grupo.

CThreadPool::GetQueueHandle

Llame a este método para obtener el identificador del puerto de finalización de E/S utilizado para poner en cola los elementos de trabajo.

CThreadPool::GetSize

Llame a este método para obtener el número de subprocesos del grupo.

CThreadPool::GetTimeout

Llame a este método para obtener el tiempo máximo de milisegundos que el grupo de subprocesos esperará un subproceso para cerrar.

CThreadPool::Initialize

Llame a este método para inicializar el grupo de subprocesos.

CThreadPool::QueryInterface

implementación de IUnknown:: QueryInterface.

CThreadPool::QueueRequest

Llame a este método a la cola un elemento de trabajo que se va a controlar por un subproceso del grupo.

CThreadPool::Release

Implementación de IUnknown::Release.

CThreadPool::SetSize

Llame a este método para establecer el número de subprocesos del grupo.

CThreadPool::SetTimeout

Llame a este método para establecer la hora máxima de milisegundos que el grupo de subprocesos esperará un subproceso para cerrar.

CThreadPool::Shutdown

Llame a este método para cerrar el grupo de subprocesos.

Comentarios

Los subprocesos del grupo se crean y se destruyen cuando se inicializa, cambia de tamaño, o se cierra el conjunto.Una instancia del trabajo de la clase se creará en la pila de cada subproceso de trabajo del conjunto.Cada instancia vivirá mientras dure el subproceso.

Inmediatamente después de la creación de un subproceso, Worker::Initialize se invitado el objeto asociado a ese subproceso.Inmediatamente antes de destrucción de un subproceso, Worker::Terminate se denominará.Ambos métodos deben aceptar un argumento de void* .El valor de este argumento se pasa al grupo de subprocesos con el parámetro de pvWorkerParam de CThreadPool::Initialize.

Cuando hay elementos de trabajo de la cola y los subprocesos de trabajo disponibles para el trabajo, un subproceso de trabajo quitará un elemento de la cola y llama al método de Execute de objeto worker para ese subproceso.Tres elementos se pasan al método: el elemento de la cola, del mismo pvWorkerParam pasado a Worker::Initialize y a Worker::Terminate, y un puntero a la estructura de SOLAPADO utilizada para la cola del puerto de finalización de E/S.

La clase worker declara el tipo de los elementos que se ponen en cola en el grupo de subprocesos proporcionando un tipo typedef, Worker::RequestType.Este tipo debe ser capaz de lanzamiento a y desde ULONG_PTR.

Un ejemplo de una clase worker es Clase de CNonStatelessWorker.

Jerarquía de herencia

IUnknown

IThreadPoolConfig

CThreadPool

Requisitos

encabezado: atlutil.h

Vea también

Referencia

Interfaz de IThreadPoolConfig

DefaultThreadTraits

Otros recursos

Clases de ATL