Поделиться через


CThreadPool Class

Этот класс предоставляет пул рабочих потоков, которые обрабатывают очередь рабочих элементов.

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

Параметры

  • рабочий
    Класс соответствующий код, используемый в архетип работы реализация элементы работы процессов в очереди в пуле потоков.

  • ThreadTraits
    Класс, предоставляющий функцию, используемую для создания потоков в пуле.

Члены

Открытые конструкторы

Имя

Описание

CThreadPool::CThreadPool

Конструктор для пула потоков.

CThreadPool::~CThreadPool

Деструктор для пула потоков.

Открытые методы

Имя

Описание

CThreadPool::AddRef

Реализация метода IUnknown::AddRef.

CThreadPool::GetNumThreads

Вызовите этот метод, чтобы получить количество потоков в пуле.

CThreadPool::GetQueueHandle

Вызовите этот метод, чтобы получить дескриптор порта завершения ввода-вывода, используемого с рабочими элементами очереди.

CThreadPool::GetSize

Вызовите этот метод, чтобы получить количество потоков в пуле.

CThreadPool::GetTimeout

Вызывайте этот метод для получения максимальное время, в миллисекундах, что пул потоков ожидает поток для закрытия.

CThreadPool::Initialize

Этот метод вызывается для инициализации пула потоков.

CThreadPool::QueryInterface

Реализация IUnknown::QueryInterface.

CThreadPool::QueueRequest

Этот метод следует вызывать в очередь рабочим элементом, который будет решать поток в кластере.

CThreadPool::Release

Реализация метода IUnknown::Release.

CThreadPool::SetSize

Вызывайте этот метод для задания количества потоков в пуле.

CThreadPool::SetTimeout

Вызовите этот метод, чтобы установить максимальное время, в миллисекундах, что пул потоков ожидает поток для закрытия.

CThreadPool::Shutdown

Вызывайте этот метод для отключения пула потоков.

Заметки

Создатьы и уничтожаются при инициализации пул потоков в пуле, изменен размерный или завершает работу. Экземпляр рабочего класса будет создать в стеке каждого рабочего потока в кластере. Каждый экземпляр будет жить в течение времени существования потока.

Сразу после создания потока, Worker::Initialize будет вызван объекта, связанном с этим потоком. Сразу после уничтожения потоков, будет вызван Worker::Terminate. Оба метода должны принимать аргумент void*. Значение этого аргумента передается в очередь пула потоков через параметр pvWorkerParamCThreadPool::Initialize.

Если рабочие элементы в очереди и рабочих потоков, доступных для рабочих рабочий поток извлекает элемент с очереди и вызывает метод Выполнить объекта работы для этого потока. Три элемента затем передаются методу: элемент из очереди, один и тот же pvWorkerParam, переданного в обработчик действия Worker::Initialize и Worker::Terminate, и указатель на структуру OVERLAPPED, используемой для очереди порта завершения ввода-вывода.

Класс Worker объявляет тип элементов в очереди в пуле потоков, предоставляя typedef, Worker::RequestType. Этот тип должен поддерживать быть приведения к службе и от ULONG_PTR.

Пример класса рабочегоCNonStatelessWorker Class.

Иерархия наследования

IUnknown

IThreadPoolConfig

CThreadPool

Требования

Header: atlutil.h

См. также

Ссылки

IThreadPoolConfig Interface

DefaultThreadTraits

Другие ресурсы

Классы ATL