Sto progettando (non scrivendo ancora) un sistema di pianificazione delle attività per un videogioco complesso. Il resto del programma gli passa oggetti contenenti una funzione e alcuni metadati che includono una stima di quanto tempo è rimasto prima che i dati siano necessari (che possono cambiare, ovviamente). Lo scheduler è responsabile della prioritizzazione di queste attività e della chiamata della funzione.
L'algoritmo che ho progettato per questo problema è piuttosto semplice; ordina solo il suo elenco di oggetti compito, ne apre uno al di sopra, lo chiama e si ripete. Certo, in realtà è più complesso di così (deve gestire situazioni in cui le cose non possono essere fatte in tempo, dicendo ad altre parti del codice che il loro compito è appena stato buttato giù nella lista ...), ma questo è il succo .
Vorrei qualche consiglio sull'argomento di come ordinerò quella lista. Ovviamente questo ciclo funzionerà costantemente mentre il programma è in esecuzione. Sto pensando di utilizzare una leggera modifica di un algoritmo di ordinamento delle bolle, che esegue un passaggio per ogni iterazione. L'elenco non verrà ordinato correttamente per i primi cicli, ma dal momento che l'elenco sarà probabilmente molto piccolo all'avvio del programma, mi aspetto che sarà in grado di posizionare le cose in modo affidabile con la stessa velocità con cui entrano.
Qualcuno l'ha già fatto prima e come ha funzionato? Ci sono modi migliori per farlo?