Runtime di concorrenza

Il runtime di concorrenza per C++ consente di scrivere applicazioni parallele affidabili, scalabili ed efficienti. Innalza il livello di astrazione in modo da evitare di dover gestire i dettagli dell'infrastruttura correlati alla concorrenza. È anche possibile usarlo per specificare i criteri di pianificazione che soddisfano le richieste di qualità del servizio delle applicazioni. Queste risorse permettono di iniziare a usare il runtime di concorrenza.

Per la documentazione di riferimento, vedere Informazioni di riferimento.

Suggerimento

Il runtime di concorrenza si basa fortemente sulle funzionalità C++11 e adotta lo stile C++ più moderno. Per altre informazioni, vedere Benvenuti in C++.

Scelta delle funzionalità del runtime di concorrenza

Articolo Descrizione
Panoramica Illustra i motivi che rendono importante il runtime di concorrenza e ne descrive le funzionalità essenziali.
Confronto con altri modelli di concorrenza Illustra il confronto tra il runtime di concorrenza ed altri modelli di concorrenza, ad esempio il pool di thread di Windows e OpenMP, in modo da poter sare il modello di concorrenza più adatto ai requisiti dell'applicazione.
Migrazione da OpenMP al runtime di concorrenza Confronta OpenMP e il Runtime di Concorrenza e fornisce esempi su come eseguire la migrazione del codice OpenMP esistente per l'uso del runtime di concorrenza.
PPL (Parallel Patterns Library) Presenta la libreria PPL, che fornisce i cicli, le attività e i contenitori paralleli.
Libreria di agenti asincroni Illustra come usare gli agenti asincroni e i passaggio dei messaggi per incorporare facilmente le attività di pipelining e il flusso di dati nelle applicazioni.
Utilità di pianificazione Presenta l'Utilità di Pianificazione, che consente di ottimizzare le prestazioni delle applicazioni desktop che usano il runtime di concorrenza.

Parallelismo delle attività nella libreria PPL

Articolo Descrizione
Parallelismo delle attività

Procedura: Usare parallel_invoke per scrivere una routine di ordinamento in parallelo

Procedura: Usare parallel_invoke per eseguire operazioni in parallelo

Procedura: Creare un'attività che viene completata dopo un ritardo
Illustra le attività e i gruppi di attività, che consentono di scrivere codice asincrono e scomporre il lavoro parallelo in sezioni più piccole.
Procedura dettagliata: implementazione di future Illustra come combinare le funzionalità del runtime di concorrenza per eseguire più operazioni.
Procedura dettagliata: rimozione di lavoro da un thread dell'interfaccia utente Illustra come spostare il lavoro eseguito dal thread della UI in un'applicazione MFC a un thread di lavoro.
Procedure consigliate nella libreria PPL (Parallel Patterns Library)

Procedure consigliate generali nel runtime di concorrenza
Fornisce suggerimenti e procedure consigliate per lavorare con il PPL.

Parallelismo dei dati nella libreria PPL

Articolo Descrizione
Algoritmi paralleli

Procedura: Scrivere un ciclo parallel_for

Procedura: Scrivere un ciclo parallel_for_each

Procedura: Eseguire operazioni di mapping e riduzione in parallelo
Illustra parallel_for, parallel_for_each, parallel_invokee altri algoritmi paralleli. Usare gli algoritmi paralleli per risolvere i problemi di tipo dati in parallelo che coinvolgono raccolte di dati.
Contenitori e oggetti paralleli

Procedura: Usare i contenitori paralleli per aumentare l'efficienza

Procedura: Usare la classe combinable per migliorare le prestazioni

Procedura: Usare l'oggetto combinable per combinare set
Illustra la classe combinable , oltre a concurrent_vector, concurrent_queue, concurrent_unordered_mape altri contenitori paralleli. Usare i contenitori e gli oggetti paralleli quando sono necessari contenitori che consentono l'accesso thread-safe ai relativi elementi.
Procedure consigliate nella libreria PPL (Parallel Patterns Library)

Procedure consigliate generali nel runtime di concorrenza
Fornisce suggerimenti e procedure consigliate per lavorare con il PPL.

Annullamento di attività e algoritmi paralleli

Articolo Descrizione
Annullamento nella libreria PPL Descrive il ruolo dell'annullamento nella libreria PPL, ad esempio come avviare e rispondere alle richieste di annullamento.
Procedura: Usare l'annullamento per interrompere un ciclo Parallel

Procedura: Usare la gestione delle eccezion per interrompere un ciclo Parallel
Illustra due modi per annullare un lavoro con dati in parallelo.

App della piattaforma UWP (Universal Windows Platform)

Articolo Descrizione
Creazione di operazioni asincrone in C++ per app UWP Descrive alcuni dei punti chiave da tenere presenti quando si usa il runtime di concorrenza per produrre operazioni asincrone in un'app UWP.
Procedura dettagliata: connessione tramite attività e richieste HTTP XML Illustra come combinare le attività PPL con le IXMLHTTPRequest2 interfacce e IXMLHTTPRequest2Callback per inviare richieste HTTP GET e POST a un servizio Web in un'app UWP.
Esempi di app di Windows Runtime Contiene esempi di codice scaricabili e app demo per Windows Runtime.

Programmazione del flusso di dati nella libreria di agenti asincroni

Articolo Descrizione
Agenti asincroni

Blocchi dei messaggi asincroni

Funzioni di passaggio dei messaggi

Procedura: Implementare vari modelli producer-consumer

Procedura: Fornire funzioni lavoro alle classi call e transformer

Procedura: Usare la classe transformer in una pipeline di dati

Procedura: Effettuare una scelta tra le attività completate

Procedura: Inviare un messaggio a intervalli regolari

Procedura: Usare il filtro di blocco dei messaggi
Illustra genti asincroni, blocchi di messaggio e funzioni di passaggio dei messaggi, ovvero i blocchi predefiniti per l'esecuzione di operazioni di flusso dei dati nel runtime di concorrenza.
Procedura dettagliata: creazione di un'applicazione basata sugli agenti

Procedura dettagliata: creazione di un agente del flusso di dati
Illustra come creare applicazioni di base basate sugli agenti.
Procedura dettagliata: creazione di una rete per l'elaborazione di immagini Illustra come creare una rete di blocchi di messaggi asincroni che eseguono l'elaborazione di immagini.
Procedura dettagliata: uso della classe join per impedire un deadlock Usa il problema dei filosofi a cena per illustrare come usare il runtime di concorrenza per impedire un deadlock nell'applicazione.
Procedura dettagliata: creazione di un blocco dei messaggi personalizzato Illustra come creare un tipo di blocco di messaggi personalizzato che consente di ordinare i messaggi in arrivo in base alla priorità.
Procedure consigliate nella libreria di agenti asincroni

Procedure consigliate generali nel runtime di concorrenza
Fornisce suggerimenti e procedure consigliate per gli agenti.

Gestione e debug delle eccezioni

Articolo Descrizione
Gestione delle eccezioni Illustra come gestire le eccezioni nel runtime di concorrenza.
Strumenti di diagnostica in parallelo Illustra come ottimizzare le applicazioni e usare il più efficacemente possibile il runtime di concorrenza.

Ottimizzazione delle prestazioni

Articolo Descrizione
Strumenti di diagnostica in parallelo Illustra come ottimizzare le applicazioni e usare il più efficacemente possibile il runtime di concorrenza.
Istanze dell'utilità di pianificazione

Procedura: Gestire un'istanza dell'utilità di pianificazione

Criteri dell'utilità di pianificazione

Procedura: Definire criteri dell'utilità di pianificazione specifici

Procedura: Creare agenti che usano criteri dell'utilità di pianificazione specifici
Illustra come usare la gestione delle istanze dell'utilità di pianificazione e i criteri dell'utilità di pianificazione. Per le app desktop, i criteri dell'utilità di pianificazione consentono di associare regole specifiche a specifici tipi di carichi di lavoro. È possibile ad esempio creare un'istanza dell'utilità di pianificazione per eseguire alcune attività con una priorità di thread elevata e usare l'utilità di pianificazione predefinita per eseguire altre attività con una priorità di thread normale.
Gruppi di pianificazione

Procedura: Usare i gruppi di pianificazione per influenzare l'ordine di esecuzione
Illustra come usare i gruppi di pianificazione per creare affinità o raggruppare insieme le attività correlate. È ad esempio possibile che sia necessario un livello elevato di località tra le attività correlate, quando queste attività traggono vantaggio dall'esecuzione nello stesso nodo del processore.
Attività leggere Illustra i vantaggi offerti dalle attività leggere nel creare il lavoro che non richiede il bilanciamento del carico o l'annullamento e nell'adattare il codice esistente per l'uso con il runtime di concorrenza.
Contesti

Procedura: Usare la classe Context per implementare una classe semaforo di cooperazione

Procedura: Usare l'oversubscription per compensare la latenza
Illustra come controllare il comportamento dei thread gestiti dal runtime di concorrenza.
Funzioni di gestione della memoria

Procedura: Usare Alloc e Free per migliorare le prestazioni di memoria
Illustra le funzioni di gestione della memoria offerte dal runtime di concorrenza che consentono di allocare e liberare memoria in modo simultaneo.

Risorse aggiuntive

Articolo Descrizione
Modelli di programmazione asincrona e suggerimenti in Hilo (app di Windows Store scritte in C++ e XAML) Informazioni su come è stato usato il runtime di concorrenza per implementare operazioni asincrone in Hilo, un'app di Windows Runtime con C++ e XAML.
Blog relativo alla programmazione parallela in codice nativo Fornisce altri articoli dettagliati del blog sulla programmazione in parallelo nel runtime di concorrenza.
Forum relativo all'elaborazione parallela in C++ e codice nativo Consente di partecipare alle discussioni della community sul runtime di concorrenza.
Programmazione parallela Illustra il modello di programmazione parallela disponibile in .NET Framework.

Vedi anche

Reference