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
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. |
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. |
|
Presenta la libreria PPL, che fornisce i cicli, le attività e i contenitori paralleli. |
|
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. |
|
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. |
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) |
Fornisce suggerimenti e procedure consigliate per lavorare con il PPL. |
Parallelismo dei dati nella libreria PPL
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) |
Fornisce suggerimenti e procedure consigliate per lavorare con il PPL. |
Annullamento di attività e algoritmi paralleli
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. |
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
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 |
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à. |
Fornisce suggerimenti e procedure consigliate per gli agenti. |
Gestione e debug delle eccezioni
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. |
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. |
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. |
|
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
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. |
|
Fornisce le applicazioni di esempio e utilità che illustrano il runtime di concorrenza. |
|
Fornisce altri articoli dettagliati del blog sulla programmazione in parallelo nel runtime di concorrenza. |
|
Consente di partecipare alle discussioni della community sul runtime di concorrenza. |
|
Illustra il modello di programmazione in parallelo disponibile in .NET Framework. |