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 ti aiutano a iniziare a lavorare con 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à di Concurrency Runtime

Articolo Descrizione
Sintesi Illustra i motivi che rendono importante il Runtime di Concurrency 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 Concurrency 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) Ti introduce alla libreria PPL, che fornisce cicli paralleli, task e 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 delle Attività, 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 dei Futures Illustra come combinare le caratteristiche del Concurrency Runtime per fare di più.
Procedura dettagliata: rimozione di operazioni 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 combinable per migliorare le prestazioni

Procedura: Utilizzare 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)

Migliori pratiche nel Concurrency Runtime
Fornisce suggerimenti e procedure consigliate per lavorare con il PPL.

Annullamento di attività e algoritmi paralleli

Articolo Descrizione
Annullamento nel 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 parallelo

Procedura: Usare la gestione delle eccezioni per interrompere un ciclo parallelo
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 a mente quando si usa il Concurrency Runtime 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 interfacce IXMLHTTPRequest2 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 di lavoro alle Classi call e transformer

Procedura: Uso del trasformatore in una data pipeline

Procedura: Effettuare una scelta tra le attività completate

Procedura: Inviare un messaggio a intervalli regolari

Procedura: Usare il filtro di blocco dei messaggi
Illustra agenti asincroni, blocchi di messaggio e funzioni di passaggio dei messaggi, ovvero i mattoni fondamentali per l'esecuzione di operazioni di flusso dei dati nel Concurrency Runtime.
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: utilizzare join per prevenire 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 Descrive come gestire le eccezioni nel Concurrency Runtime.
Strumenti di diagnostica in parallelo Illustra come ottimizzare le applicazioni e massimizzare l'efficienza nell'uso del Concurrency Runtime.

Ottimizzazione delle prestazioni

Articolo Descrizione
Strumenti di diagnostica in parallelo Illustra come affinare le applicazioni e usare il più efficacemente possibile il Concurrency Runtime.
Istanze del Scheduler

Guida: Gestire un'istanza dello scheduler

Politiche del pianificatore

Procedura: Specificare criteri specifici del pianificatore

Procedura: Creare agenti che usano policy del pianificatore specifiche
Mostra come gestire le istanze del pianificatore e le politiche del pianificatore. 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 per creare attività che non richiedono un bilanciamento del carico o annullamento e per adattare il codice esistente all'uso con il Concurrency Runtime.
Contesti

Procedura: Usare 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 Concurrency Runtime.
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) Scopri come abbiamo usato il Concurrency Runtime per implementare operazioni asincrone in Hilo, un'app Windows Runtime che utilizza C++ e XAML.
Blog relativo alla programmazione parallela in codice nativo Fornisce articoli del blog più approfonditi sulla programmazione in parallelo nel Concurrency Runtime.
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

Riferimento