Freigeben über


CThreadPool-Klasse

Diese Klasse stellt einen Pool von Arbeitsthreads, die eine Warteschlange von Arbeitsaufgaben verarbeiten.

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

Parameter

  • Worker
    Die Klasse in Übereinstimmung mit Workerprototyp, das den Code verwendet den Prozessarbeitsaufgaben in die Warteschlange gestellt im Threadpool bereitstellt.

  • ThreadTraits
    Die Klasse, die die Funktion verwendet, um die Threads im Pool zu erstellen bereitstellt.

Mitglieder

9tz6fz1e.collapse_all(de-de,VS.110).gifÖffentliche Konstruktoren

Name

Description

CThreadPool::CThreadPool

Der Konstruktor für den Threadpool.

CThreadPool::~CThreadPool

Der Destruktor für den Threadpool.

9tz6fz1e.collapse_all(de-de,VS.110).gifÖffentliche Methoden

Name

Description

CThreadPool::AddRef

Implementierung von IUnknown::AddRef.

CThreadPool::GetNumThreads

Rufen Sie diese Methode auf, um die Anzahl der Threads im Pool abzurufen.

CThreadPool::GetQueueHandle

Rufen Sie diese Methode auf, um das Handle des EA-Abschlussanschlusses abzurufen, der verwendet wird, um Arbeitsaufgaben in die Warteschlange stellen.

CThreadPool::GetSize

Rufen Sie diese Methode auf, um die Anzahl der Threads im Pool abzurufen.

CThreadPool::GetTimeout

Rufen Sie diese Methode auf, um die maximale Zeit in Millisekunden abzurufen, dass der Threadpool auf einen Thread wartet, um herunterzufahren.

CThreadPool::Initialize

Rufen Sie diese Methode auf, um den Threadpool zu initialisieren.

CThreadPool::QueryInterface

Implementierung von IUnknown::QueryInterface.

CThreadPool::QueueRequest

Rufen Sie diese Methode auf, um eine von einem Thread im Pool behandelt werden Arbeitsaufgabe in die Warteschlange zu stellen.

CThreadPool::Release

Implementierung von IUnknown::Release.

CThreadPool::SetSize

Rufen Sie diese Methode auf, um die Anzahl der Threads im Pool festzulegen.

CThreadPool::SetTimeout

Rufen Sie diese Methode auf, um die maximale Zeit in Millisekunden festzulegen, dass der Threadpool auf einen Thread wartet, um herunterzufahren.

CThreadPool::Shutdown

Rufen Sie diese Methode auf, um den Threadpool herunterzufahren.

Hinweise

Threads im Pool werden erstellt und zerstört, wenn der Pool initialisiert, Größe geändert oder beendet wird.Eine Instanz von Klasse Worker wird auf dem Stapel eines Arbeitsthreads im Pool erstellt.Jede Instanz lebt während der Lebensdauer des Threads.

Fügen Sie unmittelbar nach Erstellung eines Threads, wird Worker::Initialize um das Objekt aufgerufen, das diesem Thread zugeordnet ist.Fügen Sie unmittelbar vor Zerstörung eines Threads, wird Worker::Terminate aufgerufen.Beide Methoden müssen ein void*-Argument akzeptieren.Der Wert dieses Arguments wird an den Threadpool durch den pvWorkerParam-Parameter von CThreadPool::Initialize übergeben.

Wenn es Arbeitsaufgaben in der Warteschlange und in den Arbeitsthreads gibt, die für Arbeit verfügbar sind, wird ein Arbeitsthread ein Element aus der Warteschlange ab und ruft die Methode des ExecuteWorkerobjekts für diesen Thread auf.Drei Elemente werden dann an die Methode übergeben: das Element aus der Warteschlange, gleicher pvWorkerParam übergeben Worker::Initialize und zu Worker::Terminate und einen Zeiger auf die ÜBERLAPPEND-Struktur verwendet für die EA-Abschlussanschlusswarteschlange.

Die Workerklasse deklariert den Typ der Elemente, die im Threadpool in die Warteschlange gestellt werden, indem eine Typdefinition, Worker::RequestType bereitstellt.Dieser Typ muss in umgewandelt werden in und aus ULONG_PTR anzeigen können.

Ein Beispiel einer Worker klasse ist CNonStatelessWorker-Klasse.

Vererbungshierarchie

IUnknown

IThreadPoolConfig

CThreadPool

Anforderungen

Header: atlutil.h

Siehe auch

Referenz

IThreadPoolConfig-Schnittstelle

DefaultThreadTraits

Weitere Ressourcen

ATL-Klassen