Thread Pool API
L'API (Application Programming Interface) del pool di thread usa una progettazione basata su oggetti. Ognuno degli oggetti seguenti è rappresentato da una struttura di dati in modalità utente:
- Un oggetto pool è un set di thread di lavoro che possono essere usati per eseguire il lavoro. Ogni processo può creare più pool isolati con caratteristiche diverse in base alle esigenze. Esiste anche un pool predefinito per ogni processo.
- Un gruppo di pulizia è associato a un set di oggetti che generano il callback. Le funzioni esistono per attendere e rilasciare tutti gli oggetti membri di ogni gruppo di pulizia. In questo modo l'applicazione consente di tenere traccia di tutti gli oggetti creati.
- Un oggetto di lavoro viene assegnato a un pool e, facoltativamente, a un gruppo di pulizia. Può essere inserito, causando l'esecuzione del callback da parte di un thread di lavoro dal pool. Un oggetto di lavoro può avere più post in sospeso; ogni genera un callback. L'operazione post non può avere esito negativo a causa della mancanza di risorse.
- Un oggetto timer controlla la pianificazione dei callback. Ogni volta che un timer scade, il callback viene inserito nel pool di lavoro. L'impostazione di un timer non può avere esito negativo a causa della mancanza di risorse.
- Un oggetto wait fa in modo che un thread del cameriere attenda un handle waitable. Dopo che l'attesa è soddisfatta o il periodo di timeout scade, il thread del waiter invia il callback degli oggetti wait al pool di lavoro dell'attesa. L'impostazione di un'attesa non può avere esito negativo a causa della mancanza di risorse.
- Un oggetto I/O associa un handle di file alla porta di completamento I/O per il pool di thread. Al termine di un'operazione di I/O asincrona, un thread di lavoro preleva lo stato dell'operazione e chiama il callback dell'oggetto I/O.
Nella tabella seguente vengono descritte le funzionalità delle API del pool di thread originali e correnti.
Argomenti correlati