Threadpool-API
Die Api (Application Programming Interface) des Threadpools verwendet einen objektbasierten Entwurf. Jedes der folgenden Objekte wird durch eine Benutzermodus-Datenstruktur dargestellt:
- Ein Poolobjekt ist ein Satz von Arbeitsthreads, die zum Ausführen von Arbeiten verwendet werden können. Jeder Prozess kann bei Bedarf mehrere isolierte Pools mit unterschiedlichen Merkmalen erstellen. Es gibt auch einen Standardpool für jeden Prozess.
- Eine sauber-Up-Gruppe ist einer Gruppe von Rückruf-generierenden Objekten zugeordnet. Es gibt Funktionen, die auf alle Objekte warten und freigeben, die Mitglieder jeder sauber-up-Gruppe sind. Dadurch wird die Anwendung davon befreit, alle von ihr erstellten Objekte nachzuverfolgen.
- Ein Arbeitsobjekt wird einem Pool und optional einer sauber-Up-Gruppe zugewiesen. Es kann bereitgestellt werden, sodass ein Workerthread aus dem Pool seinen Rückruf ausführt. Ein Arbeitsobjekt kann mehrere ausstehende Beiträge aufweisen; jeder generiert einen Rückruf. Der Nachbereitungsvorgang kann aufgrund fehlender Ressourcen nicht fehlschlagen.
- Ein Timerobjekt steuert die Planung von Rückrufen. Jedes Mal, wenn ein Timer abläuft, wird sein Rückruf an den Workerpool gesendet. Das Festlegen eines Timers kann aufgrund fehlender Ressourcen nicht fehlschlagen.
- Ein wait-Objekt bewirkt, dass ein Kellnerthread auf ein wartebares Handle wartet. Nachdem die Wartezeit erfüllt wurde oder der Timeoutzeitraum abläuft, sendet der Kellnerthread den Rückruf der Warteobjekte an den Workerpool des Wartevorgangs. Das Festlegen einer Wartezeit kann aufgrund fehlender Ressourcen nicht fehlschlagen.
- Ein E/A-Objekt ordnet dem E/A-Abschlussport für den Threadpool ein Dateihandle zu. Wenn ein asynchroner E/A-Vorgang abgeschlossen ist, übernimmt ein Workerthread die status des Vorgangs und ruft den Rückruf des E/A-Objekts auf.
In der folgenden Tabelle werden die Features der ursprünglichen und aktuellen Threadpool-APIs beschrieben.
Zugehörige Themen