Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Negli argomenti contenuti in questa parte della documentazione vengono descritte le funzionalità principali dello Scheduler delle Attività del Runtime di Concorrenza. Il Task Scheduler è utile quando si vogliono ottimizzare le prestazioni del codice esistente che utilizza il Runtime di Concorrenza.
Importante
L'Utilità di pianificazione attività non è disponibile in un'app UWP (Universal Windows Platform). Per altre informazioni, vedi Creazione di operazioni asincrone in C++ per le app UWP.
In Visual Studio 2015 e versioni successive la classe concurrency::task e i tipi correlati in ppltasks.h usano Windows ThreadPool come utilità di pianificazione. Questo argomento non si applica più ai tipi definiti in ppltasks.h. Gli algoritmi paralleli come parallel_for continuano a utilizzare il Concurrency Runtime come pianificatore predefinito.
Suggerimento
Il Concurrency Runtime fornisce uno scheduler predefinito, pertanto non è necessario crearne uno nell'applicazione. Poiché il Task Scheduler consente di ottimizzare le prestazioni delle applicazioni, è consigliabile iniziare con la Parallel Patterns Library (PPL) o la Asynchronous Agents Library se si è nuovi al Concurrency Runtime.
L'Utilità di pianificazione pianifica e coordina le attività in fase di esecuzione. Un'attività è un'unità di lavoro che esegue un compito specifico. Un'attività può in genere essere eseguita in parallelo con altre attività. Esempi di attività sono rappresentati dal lavoro eseguito dagli elementi del gruppo di attività, dagli algoritmi paralleli e dagli agenti asincroni.
L'Utilità di pianificazione gestisce i dettagli correlati alla pianificazione efficiente delle attività su computer che dispongono di più risorse di elaborazione. L'Utilità di pianificazione usa inoltre le funzionalità più recenti del sistema operativo sottostante. Pertanto, le applicazioni che utilizzano il Concurrency Runtime si adattano automaticamente alle capacità dell'hardware, migliorando le loro prestazioni su sistemi con funzionalità avanzate.
Rispetto ad altri modelli di concorrenza, vengono descritte le differenze tra meccanismi di pianificazione preemptive e cooperativi. L'Utilità di pianificazione usa la pianificazione cooperativa e un algoritmo di sottrazione del lavoro insieme al scheduler preemptivo del sistema operativo per ottenere il massimo utilizzo delle risorse di elaborazione.
Il runtime di concorrenza fornisce un pianificatore predefinito in modo da non dover gestire i dettagli dell'infrastruttura. Pertanto, normalmente non si utilizza direttamente l'Utilità di pianificazione delle attività. Tuttavia, per soddisfare le esigenze di qualità dell'applicazione, è possibile usare l'Utilità di pianificazione per fornire criteri di pianificazione personalizzati o associare utilità di pianificazione a specifiche attività. Si supponga ad esempio di avere una routine di ordinamento parallela che non possa essere usata con più di quattro processori. È possibile usare i criteri dell'utilità di pianificazione per creare un'utilità di pianificazione che genera non più di quattro attività simultanee. L'esecuzione della routine di ordinamento su questa utilità di pianificazione consente alle altre utilità di pianificazione attive di usare tutte le risorse di elaborazione rimanenti.
Argomenti correlati
| Titolo | Descrizione |
|---|---|
| Istanze del Scheduler | Vengono descritte le istanze del schedulatore e l'uso delle classi concurrency::Scheduler e concurrency::CurrentScheduler per gestirle. Usare le istanze dell'utilità di pianificazione quando si vuole associare i criteri di pianificazione espliciti a specifici tipi di carichi di lavoro. |
| Politiche del pianificatore | Descrive il ruolo dei criteri dell'utilità di pianificazione. Usare i criteri del pianificatore per controllare la strategia adottata dal pianificatore per gestire le attività. |
| Gruppi di pianificazione | Descrive il ruolo dei gruppi di pianificazione. Usare i gruppi di pianificazione quando è necessario un livello elevato di località tra le attività, ad esempio quando un gruppo di attività correlate trae vantaggio dall'esecuzione nello stesso nodo del processore. |
| Attività leggere | Descrive il ruolo delle attività leggere. Le attività leggere sono utili quando si adatta il codice esistente per utilizzare la funzionalità di pianificazione del Concurrency Runtime. |
| Contesti | Descrive il ruolo dei contesti, la funzione concurrency::wait e la classe concurrency::Context. Usa questa funzionalità quando hai bisogno di controllare il blocco, sblocco e la cessione dei contesti, oppure vuoi abilitare un'oversubscription nella tua applicazione. |
| Funzioni di gestione della memoria | Descrive le funzioni concurrency::Alloc e concurrency::Free. Queste funzioni consentono di migliorare le prestazioni di memoria allocando e liberando memoria in modo simultaneo. |
| Confronto con altri modelli di concorrenza | Descrive le differenze tra i meccanismi di pianificazione di tipo preemptive e cooperativa. |
| PPL (Parallel Patterns Library) | Descrive come usare i vari modelli paralleli, ad esempio gli algoritmi paralleli, nelle applicazioni. |
| Libreria di agenti asincroni | Descrive come usare gli agenti asincroni nelle applicazioni. |
| Concurrency Runtime | Descrive il runtime di concorrenza che semplifica la programmazione parallela e contiene i collegamenti ad argomenti correlati. |