Condividi tramite


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 Riferimento (runtime di concorrenza).

Suggerimento

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

Scelta delle funzionalità del runtime di concorrenza

Cenni preliminari sul runtime di concorrenza

Illustra i motivi che rendono importante il runtime di concorrenza e ne descrive le funzionalità essenziali.

Confronto tra runtime di concorrenza e 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 (runtime di concorrenza)

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

Parallelismo delle attività (runtime di concorrenza)

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

Procedura: utilizzare 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

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_invoke e 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: utilizzare i contenitori paralleli per aumentare l'efficienza

Procedura: utilizzare la classe combinable per migliorare le prestazioni

Procedura: utilizzare l'oggetto combinable per combinare set

Illustra la classe combinable, oltre a concurrent_vector, concurrent_queue, concurrent_unordered_map e 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

Annullamento nella libreria PPL

Descrive il ruolo dell'annullamento nella libreria PPL, ad esempio come avviare e rispondere alle richieste di annullamento.

Procedura: utilizzare l'annullamento per interrompere un ciclo Parallel

Procedura: utilizzare la gestione delle eccezion per interrompere un ciclo Parallel

Illustra due modi per annullare un lavoro con dati in parallelo.

App di Windows Store

Creazione di operazioni asincrone in C++ per le applicazioni Windows Store

Illustra alcuni punti chiave da ricordare quando si usa il runtime di concorrenza per produrre operazioni asincrone in un'app Windows Store.

Procedura dettagliata: connessione tramite attività e richieste HTTP XML

Illustra come combinare le attività della libreria PPL con le interfacce IXMLHTTPRequest2 e IXMLHTTPRequest2Callback per inviare richieste HTTP GET e POST ad un servizio web in un'app Windows Store.

Esempi di app di Windows Store

Contiene codici di esempio scaricabili e app demo per Windows 8 Windows 8. Gli esempi in C++ usano le funzionalità del runtime di concorrenza come attività della libreria PPL per elaborare i dati in background per mantenere l'esperienza utente reattiva.

Programmazione del flusso di dati nella libreria di agenti asincroni

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: Utilizzare la classe transformer in una pipeline di dati

Procedura: effettuare una scelta tra le attività completate

Procedura: inviare un messaggio a intervalli regolari

Procedura: utilizzare 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: utilizzo 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

Gestione delle eccezioni nel runtime di concorrenza

Illustra come gestire le eccezioni nel runtime di concorrenza.

Strumenti di diagnostica in parallelo (runtime di concorrenza)

Illustra come ottimizzare le applicazioni e usare il più efficacemente possibile il runtime di concorrenza.

Ottimizzazione delle prestazioni

Strumenti di diagnostica in parallelo (runtime di concorrenza)

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: specificare criteri dell'utilità di pianificazione specifici

Procedura: creare agenti che utilizzano 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: utilizzare 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: utilizzare la classe Context per implementare una classe semaforo di cooperazione

Procedura: utilizzare l'oversubscription per compensare la latenza

Illustra come controllare il comportamento dei thread gestiti dal runtime di concorrenza.

Funzioni di gestione della memoria

Procedura: utilizzare 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

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 le operazioni asincrone in Hilo, un'app di Windows Store scritta in C++ e XAML.

Esempi di codice per la libreria di modelli in parallelo e di runtime di concorrenza in Visual Studio 2010

Fornisce le applicazioni di esempio e utilità che illustrano il runtime di concorrenza.

Blog della programmazione parallela del codice nativo

Fornisce altri articoli dettagliati del blog sulla programmazione in parallelo nel runtime di concorrenza.

Forum per la elaborazione parallela del codice nativo e C++

Consente di partecipare alle discussioni della community sul runtime di concorrenza.

Programmazione parallela in .NET Framework

Illustra il modello di programmazione in parallelo disponibile in .NET Framework.

Vedere anche

Altre risorse

Riferimento (runtime di concorrenza)