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
Öffentliche Konstruktoren
Name |
Description |
---|---|
Der Konstruktor für den Threadpool. |
|
Der Destruktor für den Threadpool. |
Öffentliche Methoden
Name |
Description |
---|---|
Implementierung von IUnknown::AddRef. |
|
Rufen Sie diese Methode auf, um die Anzahl der Threads im Pool abzurufen. |
|
Rufen Sie diese Methode auf, um das Handle des EA-Abschlussanschlusses abzurufen, der verwendet wird, um Arbeitsaufgaben in die Warteschlange stellen. |
|
Rufen Sie diese Methode auf, um die Anzahl der Threads im Pool abzurufen. |
|
Rufen Sie diese Methode auf, um die maximale Zeit in Millisekunden abzurufen, dass der Threadpool auf einen Thread wartet, um herunterzufahren. |
|
Rufen Sie diese Methode auf, um den Threadpool zu initialisieren. |
|
Implementierung von IUnknown::QueryInterface. |
|
Rufen Sie diese Methode auf, um eine von einem Thread im Pool behandelt werden Arbeitsaufgabe in die Warteschlange zu stellen. |
|
Implementierung von IUnknown::Release. |
|
Rufen Sie diese Methode auf, um die Anzahl der Threads im Pool festzulegen. |
|
Rufen Sie diese Methode auf, um die maximale Zeit in Millisekunden festzulegen, dass der Threadpool auf einen Thread wartet, um herunterzufahren. |
|
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
CThreadPool
Anforderungen
Header: atlutil.h
Siehe auch
Referenz
IThreadPoolConfig-Schnittstelle