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.È inoltre possibile utilizzarlo per specificare i criteri di pianificazione che soddisfano le richieste di qualità del servizio delle applicazioni.Utilizzare queste soluzioni per poter iniziare a utilizzare il runtime di concorrenza.
Per la documentazione di riferimento, vedere Riferimento (runtime di concorrenza).
Suggerimento |
---|
Il runtime di concorrenza si basa in modo rilevante sulle funzionalità C++11 e adottano lo stile più moderno C++.Per ulteriori informazioni, vedere Digitare di nuovo a C++ (C++ moderno). |
Scegliere le funzionalità del runtime di concorrenza
Viene illustrato il motivo per cui è importante il runtime di concorrenza e vengono descritte le relative funzionalità principali. |
|
Confronto tra runtime di concorrenza e altri modelli di concorrenza |
Viene illustrato 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 utilizzare il modello di concorrenza più adatto ai requisiti dell'applicazione. |
Confronta OpenMP al runtime di concorrenza e vengono forniti esempi su come eseguire la migrazione del codice OpenMP esistente per utilizzare il runtime di concorrenza. |
|
Viene descritta la libreria PPL, che fornisce i cicli, le attività e i contenitori paralleli in parallelo. |
|
Introduttive su come utilizzare gli agenti asincroni e il passaggio dei messaggi di includere facilmente e il flusso delle attività di pipelining nelle applicazioni. |
|
Si verifica all'utilità di pianificazione, che consente di ottimizzare le prestazioni delle applicazioni desktop che utilizzano 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 |
Vengono descritte le attività e i gruppi di attività, che consentono di scrivere codice asincrono e per scomporre il lavoro parallelo in sezioni più piccole. |
Viene illustrato come combinare le funzionalità del runtime di concorrenza per eseguire un'operazione di più. |
|
Procedura dettagliata: rimozione di lavoro da un thread dell'interfaccia utente |
Viene illustrato come spostare il lavoro eseguito dal thread UI in un'applicazione MFC a un thread di lavoro. |
Procedure consigliate nella libreria PPL (Parallel Patterns Library) |
Vengono forniti suggerimenti e procedure consigliate per l'utilizzo della libreria 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 |
Viene descritto parallel_for, parallel_for_each, parallel_invokee altri algoritmi paralleli.Utilizzare gli algoritmi paralleli per risolvere i problemi paralleli di dati che costituiscono 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 |
Viene descritta la classe di combinable nonché concurrent_vector, concurrent_queue, concurrent_unordered_mape altri contenitori paralleli.Utilizzare i contenitori e oggetti paralleli quando i contenitori che consentono l'accesso thread-safe ai relativi elementi. |
Procedure consigliate nella libreria PPL (Parallel Patterns Library) |
Vengono forniti suggerimenti e procedure consigliate per l'utilizzo della libreria PPL. |
Annullare le attività e algoritmi paralleli
Viene descritto 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 |
Vengono illustrati due modi per annullare un lavoro parallelo dati. |
Applicazioni dell'archivio di Windows
Creazione di operazioni asincrone in C++ per le applicazioni Windows Store |
Vengono descritti alcuni punti chiave di cui tenere conto quando si utilizza il runtime di concorrenza per produrre operazioni asincrone in un'applicazione di Windows Store. |
Procedura dettagliata: connessione tramite attività e richiesta HTTP XML (IXHR2) |
Viene illustrato come combinare le attività di libreria PPL con interfacce di IXMLHTTPRequest2Callback e di IXMLHTTPRequest2 inviare HTTP GET ed INSERIRE le richieste a un servizio web in un'applicazione di Windows Store. |
Contiene esempi di codice scaricabili e applicazioni demo per Windows 8.Esempi di C++ utilizzano le funzionalità del runtime di concorrenza come attività di libreria PPL elaborare i dati in background per mantenere reattiva UX. |
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 |
Vengono descritti gli agenti asincroni, blocchi dei messaggi e funzioni di passaggio dei messaggi, che sono i blocchi predefiniti per eseguire operazioni del flusso di dati nel runtime di concorrenza. |
Procedura dettagliata: creazione di un'applicazione basata sugli agenti Procedura dettagliata: creazione di un agente del flusso di dati |
Viene illustrato come creare le applicazioni basate sugli agenti di base. |
Procedura dettagliata: creazione di una rete per l'elaborazione di immagini |
Viene illustrato 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 |
Utilizza il problema dei filosofi a cena per illustrare come utilizzare il runtime di concorrenza per impedire un deadlock nell'applicazione. |
Procedura dettagliata: creazione di un blocco dei messaggi personalizzato |
Viene illustrato come creare un tipo di blocco di messaggi personalizzato che consente di ordinare i messaggi in arrivo in base alla priorità. |
Vengono forniti suggerimenti e procedure consigliate per l'utilizzo degli agenti. |
Gestione delle eccezioni e debug
Viene descritto come gestire le eccezioni nel runtime di concorrenza. |
|
Strumenti di diagnostica in parallelo (runtime di concorrenza) |
Viene illustrato come ottimizzare le applicazioni e utilizzare il più efficacemente possibile il runtime di concorrenza. |
Prestazioni di ottimizzazione
Strumenti di diagnostica in parallelo (runtime di concorrenza) |
Viene illustrato come ottimizzare le applicazioni e utilizzare 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 |
Viene illustrato come utilizzare gestiscono le istanze dell'utilità di pianificazione e criteri dell'utilità di pianificazione.Per le applicazioni desktop, i criteri dell'utilità di pianificazione consentono di associare le 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 utilizzare 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 |
Viene illustrato come utilizzare i gruppi di pianificazione per affinitize raccolta, o il gruppo, attività correlate.Ad esempio, è possibile richiedere un livello di località alto tra le attività correlate alle attività vantaggiosa per eseguire lo stesso nodo del processore. |
Viene illustrato come le attività leggere sono utili per creare il lavoro che non richiede il bilanciamento del carico o l'annullamento e quali sono utili per adattare il codice esistente per l'utilizzo 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 |
Viene descritto 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 |
Vengono descritte le funzioni di gestione della memoria che il runtime di concorrenza che consentono di allocare e liberare memoria in modo simultaneo. |
Risorse supplementari
Viene descritto come è stato utilizzato il runtime di concorrenza per implementare le operazioni asincrone in Hilo, un'applicazione di Windows Store utilizzando C++ e XAML. |
|
Fornisce le applicazioni di esempio e utilità che illustrano il runtime di concorrenza. |
|
Vengono forniti ulteriori articoli dettagliati del blog sulla programmazione in parallelo nel runtime di concorrenza. |
|
Forum sull'elaborazione in parallelo in codice nativo e in CC++ |
Consente di partecipare alle discussioni della community sul runtime di concorrenza. |
Viene illustrato il modello di programmazione in parallelo disponibile in .NET Framework. |