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
Constructores públicos
Name |
Descripción |
---|---|
El constructor del grupo de subprocesos. |
|
El destructor para el grupo de subprocesos. |
Métodos públicos
Name |
Descripción |
---|---|
Implementación de IUnknown::AddRef. |
|
Llame a este método para obtener el número de subprocesos del grupo. |
|
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. |
|
Llame a este método para obtener el número de subprocesos del grupo. |
|
Llame a este método para obtener el tiempo máximo de milisegundos que el grupo de subprocesos esperará un subproceso para cerrar. |
|
Llame a este método para inicializar el grupo de subprocesos. |
|
implementación de IUnknown:: QueryInterface. |
|
Llame a este método a la cola un elemento de trabajo que se va a controlar por un subproceso del grupo. |
|
Implementación de IUnknown::Release. |
|
Llame a este método para establecer el número de subprocesos del grupo. |
|
Llame a este método para establecer la hora máxima de milisegundos que el grupo de subprocesos esperará un subproceso para cerrar. |
|
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
CThreadPool
Requisitos
encabezado: atlutil.h