Attualmente sto usando il LimitedConcurrencyLevelTaskScheduler dettagliato qui http://msdn.microsoft.com/en-us/library/ee789351.aspx.Net TPL: programmatore di attività a livello di concorrenza limitato con priorità delle attività?
Voglio migliorare questo in modo che gli individui possono essere assegnati compiti di priorità. Queste priorità non devono necessariamente mappare alla priorità del thread. Dovrebbe solo influenzare l'ordine in cui vengono avviate le attività.
Qualcuno sa di un esempio di un tale programma di pianificazione? (molte cose di pianificazione sono passate per la testa quindi sarebbe bello se esistesse una soluzione esistente)
Che scheduler utilizza un LinkedList per una coda. Provare a cambiarlo in SortedList dove T è una struttura che contiene un'attività e un numero intero per priorità e ordinare l'elenco su T.Priority. –
@IgbyLargeman - [SortedList] (http://msdn.microsoft.com/en-us/library/ms132319.aspx) potrebbe non essere una soluzione ideale: le chiavi (priorità) devono essere uniche. La maggior parte dei sistemi prioritari ha solo pochi livelli e consente di assegnare più oggetti alla stessa priorità –
è una cattiva idea. Una coda con internamente un set (array) di code - una per ogni priorità - è un modo migliore. Le priorità non sono uniche e limitate a un numero limitato di esse. Inoltre, non utilizzare un elenco collegato: ho una "coda" che utilizza internamente matrici di 4096 elementi, oltre a opointer. molto meno allocazione - gli elementi vengono rimossi dalla "pagina" frontale, aggiunta al nd. Meno allocazioni, meno rifiuti da raccogliere. – TomTom