Threadpool-API
Die Api (Threadpoolanwendungsprogrammierschnittstelle) verwendet ein objektbasiertes Design. Jedes der folgenden Objekte wird durch eine Datenstruktur im Benutzermodus dargestellt:
- Ein Poolobjekt ist eine Gruppe von Arbeitsthreads, die zum Ausführen von Arbeiten verwendet werden können. Jeder Prozess kann bei Bedarf mehrere isolierte Pools mit unterschiedlichen Merkmalen erstellen. Für jeden Prozess gibt es auch einen Standardpool.
- Eine Bereinigungsgruppe ist einer Gruppe von rückrufgenerierenden Objekten zugeordnet. Funktionen sind vorhanden, um auf alle Objekte zu warten und freizugeben, die Mitglieder jeder Bereinigungsgruppe sind. Dadurch wird die Anwendung freigegeben, um alle erstellten Objekte nachzuverfolgen.
- Einem Pool und optional einer Bereinigungsgruppe wird ein Arbeitsobjekt zugewiesen. Er kann gepostet werden, was dazu führt, dass ein Arbeitsthread aus dem Pool seinen Rückruf ausführt. Ein Arbeitsobjekt kann über mehrere ausstehende Beiträge verfügen; jeder generiert einen Rückruf. Der Postvorgang 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 in seinen Arbeitspool gepostet. Das Festlegen eines Timers kann aufgrund fehlender Ressourcen nicht fehlschlagen.
- Ein Wait-Objekt bewirkt, dass ein Waiterthread auf ein abwartbares Handle wartet. Nachdem die Wartezeit erfüllt ist oder der Timeoutzeitraum abläuft, sendet der Waiter-Thread den Rückruf der Warteobjekte an den Workerpool des Wartens. Das Festlegen einer Wartezeit kann aufgrund fehlender Ressourcen nicht fehlschlagen.
- Ein E/A-Objekt ordnet einen Dateihandle dem E/A-Abschlussport für den Threadpool zu. Wenn ein asynchroner E/A-Vorgang abgeschlossen ist, nimmt ein Workerthread den Status des Vorgangs auf 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.
Verwandte Themen