Класс CThreadPool
Этот класс предоставляет пул рабочих потоков, которые обрабатывают очередь рабочих элементов.
template <
class Worker,
class ThreadTraits = DefaultThreadTraits
>
class CThreadPool :
public IThreadPoolConfig
Параметры
рабочий
Класс соответствующий код, используемый в архетип работы реализация элементы работы процессов в очереди в пуле потоков.ThreadTraits
Класс, предоставляющий функцию, используемую для создания потоков в пуле.
Члены
Открытые конструкторы
Имя |
Описание |
---|---|
Конструктор для пула потоков. |
|
Деструктор для пула потоков. |
Открытые методы
Имя |
Описание |
---|---|
Реализация метода IUnknown::AddRef. |
|
Вызовите этот метод, чтобы получить количество потоков в пуле. |
|
Вызовите этот метод, чтобы получить дескриптор порта завершения ввода-вывода, используемого с рабочими элементами очереди. |
|
Вызовите этот метод, чтобы получить количество потоков в пуле. |
|
Вызывайте этот метод для получения максимальное время, в миллисекундах, что пул потоков ожидает поток для закрытия. |
|
Этот метод вызывается для инициализации пула потоков. |
|
Реализация IUnknown::QueryInterface. |
|
Этот метод следует вызывать в очередь рабочим элементом, который будет решать поток в кластере. |
|
Реализация метода IUnknown::Release. |
|
Вызывайте этот метод для задания количества потоков в пуле. |
|
Вызовите этот метод, чтобы установить максимальное время, в миллисекундах, что пул потоков ожидает поток для закрытия. |
|
Вызывайте этот метод для отключения пула потоков. |
Заметки
Создатьы и уничтожаются при инициализации пул потоков в пуле, изменен размерный или завершает работу.Экземпляр рабочего класса будет создать в стеке каждого рабочего потока в кластере.Каждый экземпляр будет жить в течение времени существования потока.
Сразу после создания потока, Worker::Initialize будет вызван объекта, связанном с этим потоком.Сразу после уничтожения потоков, будет вызван Worker::Terminate.Оба метода должны принимать аргумент void*.Значение этого аргумента передается в очередь пула потоков через параметр pvWorkerParamCThreadPool::Initialize.
Если рабочие элементы в очереди и рабочих потоков, доступных для рабочих рабочий поток извлекает элемент с очереди и вызывает метод Выполнить объекта работы для этого потока.Три элемента затем передаются методу: элемент из очереди, один и тот же pvWorkerParam, переданного в обработчик действия Worker::Initialize и Worker::Terminate, и указатель на структуру OVERLAPPED, используемой для очереди порта завершения ввода-вывода.
Класс Worker объявляет тип элементов в очереди в пуле потоков, предоставляя typedef, Worker::RequestType.Этот тип должен поддерживать быть приведения к службе и от ULONG_PTR.
Пример класса рабочегоКласс CNonStatelessWorker.
Иерархия наследования
IUnknown
CThreadPool
Требования
Header: atlutil.h