Utilità di pianificazione (runtime di concorrenza)

 

Per la documentazione più recente di Visual Studio 2017 RC, vedere Documentazione di Visual Studio 2017 RC.

Negli argomenti contenuti in questa parte della documentazione vengono descritte le funzionalità principali dell'utilità di pianificazione del runtime di concorrenza. L'Utilità di pianificazione è utile quando si vuole ottimizzare le prestazioni del codice esistente che usa il runtime di concorrenza.

System_CAPS_ICON_important.jpg Importante

L'utilità di pianificazione non è disponibile in un'applicazione Windows 8.x Store. Per altre informazioni, vedere Creazione di operazioni asincrone in C++ per le applicazioni Windows Store.

In Visual Studio 2015 e versioni successive, la classe concurrency::task e i tipi correlati in ppltasks.h usano il pool di thread di Windows come utilità di pianificazione. Questo argomento non si applica più ai tipi definiti in ppltasks.h. Gli algoritmi paralleli come parallel_for continuano a usare il runtime di concorrenza come utilità di pianificazione predefinita.

System_CAPS_ICON_tip.jpg Suggerimento

Il runtime di concorrenza fornisce un'utilità di pianificazione predefinita, pertanto non è necessario crearne una nell'applicazione. Poiché l'Utilità di pianificazione consente di ottimizzare le prestazioni delle applicazioni, è consigliabile iniziare con la libreria PPL (Parallel Patterns Library) o Libreria di agenti asincroni se non si ha familiarità con il runtime di concorrenza.

L'Utilità di pianificazione pianifica e coordina le attività in fase di esecuzione. Per attività si intende un'unità di lavoro che esegue un processo 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 usano il runtime di concorrenza si adeguano automaticamente all'hardware migliorandolo con funzionalità estese.

In Confronto con altri modelli di concorrenza vengono descritte le differenze tra i meccanismi di pianificazione di tipo preemptive e cooperativa. L'Utilità di pianificazione usa la pianificazione cooperativa e un algoritmo di acquisizione del lavoro insieme all'utilità di pianificazione di tipo preemptive del sistema operativo per ottimizzare l'uso delle risorse di elaborazione.

Il runtime di concorrenza fornisce un'utilità di pianificazione predefinita in modo da evitare di dover gestire i dettagli dell'infrastruttura. Pertanto, l'Utilità di pianificazione in genere non viene usata direttamente. 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 generi 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.

TitoloDescrizione
Istanze dell'utilità di pianificazioneVengono descritte le istanze dell'utilità di pianificazione 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.
Criteri dell'utilità di pianificazioneDescrive il ruolo dei criteri dell'utilità di pianificazione. Usare i criteri dell'utilità di pianificazione per controllare la strategia usata dall'utilità di pianificazione quando gestisce le attività.
Gruppi di pianificazioneDescrive 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à leggereDescrive il ruolo delle attività leggere. Le attività leggere sono utili quando si adatta il codice esistente per usare la funzionalità di pianificazione del runtime di concorrenza.
ContestiDescrive il ruolo dei contesti, la funzione concurrency::wait e la classe concurrency::Context. Usare queste funzionalità quando è necessario controllare le operazioni di blocco, sblocco e restituzione dei contesti e l'oversubscription nell'applicazione.
Funzioni di gestione della memoriaDescrive 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 concorrenzaDescrive 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 asincroniDescrive come usare gli agenti asincroni nelle applicazioni.
Runtime di concorrenzaDescrive il runtime di concorrenza che semplifica la programmazione parallela e contiene i collegamenti ad argomenti correlati.
Mostra: