Funzioni di gestione della memoria
Questo documento descrive le funzioni di gestione della memoria fornite dal runtime di concorrenza per allocare e liberare memoria in modo simultaneo.
Suggerimento
Il runtime di concorrenza fornisce un'utilità di pianificazione predefinita, pertanto non è necessario crearne una nell'applicazione. Poiché l'Utilità di pianificazione consente di ottimizzare le prestazioni delle applicazioni, è consigliabile iniziare con la libreria PPL (Parallel Patterns Library) o la libreria degli agenti asincroni se non si ha una novità del runtime di concorrenza.
Il runtime di concorrenza fornisce due funzioni di gestione della memoria ottimizzate per l'allocazione e la liberazione di blocchi di memoria in modo simultaneo. La funzione concurrency::Alloc alloca un blocco di memoria usando le dimensioni specificate. La funzione concurrency::Free libera la memoria allocata da Alloc
.
Nota
Le Alloc
funzioni e Free
si basano l'una sull'altra. Usare la Free
funzione solo per rilasciare la memoria allocata usando la Alloc
funzione . Inoltre, quando si usa la Alloc
funzione per allocare memoria, usare solo la Free
funzione per rilasciare tale memoria.
Usare le Alloc
funzioni e Free
quando si alloca e si libera un set fisso di dimensioni di allocazione da thread o attività diversi. Il runtime di concorrenza memorizza nella cache la memoria allocata dall'heap di runtime C. Il runtime di concorrenza contiene una cache di memoria separata per ogni thread in esecuzione; pertanto, il runtime gestisce la memoria senza l'uso di blocchi o barriere di memoria. Un'applicazione offre più vantaggi dalle Alloc
funzioni e Free
quando si accede alla cache di memoria più frequentemente. Ad esempio, un thread che chiama frequentemente e Free
Alloc
offre vantaggi maggiori di un thread che chiama Alloc
principalmente o Free
.
Nota
Quando si usano queste funzioni di gestione della memoria e l'applicazione usa molta memoria, l'applicazione potrebbe entrare in una condizione di memoria insufficiente prima del previsto. Poiché i blocchi di memoria memorizzati nella cache da un thread non sono disponibili per altri thread, se un thread contiene una quantità elevata di memoria, tale memoria non è disponibile.
Esempio
Per un esempio che usa le Alloc
funzioni e Free
per migliorare le prestazioni di memoria, vedere Procedura: Usare Alloc e Libero per migliorare le prestazioni di memoria.
Vedi anche
Utilità di pianificazione
Procedura: Usare Alloc e Free per migliorare le prestazioni di memoria