Perdona il titolo se non è corretto, non sono sicuro di ciò che sto cercando di progettare.
Dire che ho un numero di attività che voglio eseguire, N.
Inoltre, ho un numero massimo di thread che posso allocare contemporaneamente, T.
Voglio eseguire molte di queste attività in asincrono come ho thread disponibili (fino a T), e una volta che un thread si libera voglio iniziare immediatamente una nuova attività sul thread che ha appena finito fino a quando tutte le attività sono state correre.
ESEMPIO
Ho 10 compiti da eseguire e 4 thread disponibili per eseguire queste attività. All'avvio dell'app, 4 thread iniziano l'esecuzione di 4 delle 10 attività, lasciando 6 attività rimanenti, quando termina una delle attività in esecuzione, immediatamente un'altra attività inizia a essere eseguita su un nuovo thread e ci sono 5 attività rimanenti. Questo va avanti fino a quando non ci sono più attività rimanenti da eseguire.
DOMANDA
Esiste un modello di progettazione o un'architettura di applicazione comune che posso studiare per creare un task runner come questo?