Share via


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 FreeAlloc 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