6

Voglio utilizzare TPL nel processo Worker su Windows Azure. Sto cercando di aggiungere un IJob la coda, questo ha un metodo Run, in modo che il lavoratore sarà composto da:Attività massime in TPL?

ciclo get voce fuori coda Usa TPL per chiamare IJob.Run, questa è una chiamata asincrona

Ma sono un po 'preoccupato per gli elementi massimi che posso aggiungere a TPL? Sono felice di creare il mio pool TPL di qualche tipo, se necessario, semplicemente controllando le sue capacità.

Cheers, Frassino.

risposta

9

Uno degli obiettivi principali della TPL è rimuovere la necessità di preoccuparsi di ciò. Scomponendo il lavoro in Task anziché in Threads, si consente allo scheduler di gestire il bilanciamento di questo in modo più appropriato.

Non esiste un limite superiore fisso per il numero di "attività" che è possibile pianificare. Sono (di default, con il TaskScheduler predefinito) pianificati usando il ThreadPool, che a partire da .NET 4 si adatta in base al lavoro. Suggerisco caldamente di non provare a creare il proprio pool: è altamente improbabile che tu faccia meglio del default. Detto questo, se le tue attività hanno un comportamento non standard, potresti prendere in considerazione la possibilità di scrivere un TaskScheduler personalizzato.

Inoltre, rendi conto che dovresti, idealmente, rendere i tuoi compiti il ​​più "grandi possibile". Esiste un sovraccarico associato a un singolo compito: il fatto che siano troppo piccoli (in termini di lavoro) farà sì che il sovraccarico abbia un impatto maggiore sulle prestazioni rispetto a un numero appropriato di "attività" più grandi.

+1

Avere 'Task' troppo grandi potrebbe essere un problema, perché potrebbe ritardare l'elaborazione di altri' Task's. Quindi, con grandi 'Task', potresti ottenere un throughput migliore, ma una latenza peggiore. – svick

Problemi correlati